Mysql 海螺组替代品

Mysql 海螺组替代品,mysql,sql,select,Mysql,Sql,Select,我无意中发现了这个问题,似乎无法掌握它的窍门。 我有三张桌子: MSG_V3_线程 MSG\u V3\u线程\u用户 MSG\u V3\u线程\u合作伙伴 现在,我需要做的是最终得到这张表: (注:上图为Photoshop) 我似乎找不到解决这个问题的办法。我设法做了一个小组讨论,它给了我正确的结果,但它不是我需要的格式。我现在也有这个疑问: SELECT msg_v3_thread.thread_id, user_id, NULL as partner_id FROM msg_v3_

我无意中发现了这个问题,似乎无法掌握它的窍门。 我有三张桌子:

MSG_V3_线程

MSG\u V3\u线程\u用户

MSG\u V3\u线程\u合作伙伴

现在,我需要做的是最终得到这张表:

(注:上图为Photoshop)

我似乎找不到解决这个问题的办法。我设法做了一个
小组讨论
,它给了我正确的结果,但它不是我需要的格式。我现在也有这个疑问:

SELECT  msg_v3_thread.thread_id, user_id, NULL as partner_id
FROM msg_v3_thread
LEFT JOIN msg_v3_thread_users ON msg_v3_thread_users.thread_id = msg_v3_thread.thread_id 
WHERE msg_v3_thread.thread_id = 3
UNION
SELECT  msg_v3_thread.thread_id, partner_id, NULL as user_id
FROM msg_v3_thread
LEFT JOIN msg_v3_thread_partners ON msg_v3_thread_partners.thread_id = msg_v3_thread.thread_id 
WHERE msg_v3_thread.thread_id = 3
其结果是:

它只是将所有ID放在一列中

谁能帮我一下吗?也许解决方案很简单,但我就是看不出来


谢谢大家!

您的想法是正确的,只需切换您正在查询的显式
null
s即可。在所有查询中,别名都会被忽略,但在使用
union
运算符时,第一个查询除外:

SELECT  msg_v3_thread.thread_id, user_id, NULL as partner_id
FROM msg_v3_thread
LEFT JOIN msg_v3_thread_users ON msg_v3_thread_users.thread_id = msg_v3_thread.thread_id 
WHERE msg_v3_thread.thread_id = 3
UNION
SELECT  msg_v3_thread.thread_id, NULL as user_id, partner_id -- Here!
FROM msg_v3_thread
LEFT JOIN msg_v3_thread_partners ON msg_v3_thread_partners.thread_id = msg_v3_thread.thread_id 
WHERE msg_v3_thread.thread_id = 3

我想你只需要像这样的
union

select thread_id, user_id, NULL as partner_id
from MSG_V3_THREAD_USERS
where thread_id = 3
union
select thread_id, NULL, partner_id
from MSG_V3_THREAD_PARTNERS
where thread_id = 3;
请注意,
union
删除表内和表间的重复项。你也可以这样写:

select distinct thread_id, user_id, NULL as partner_id
from MSG_V3_THREAD_USERS
where thread_id = 3
union all
select distinct thread_id, NULL, partner_id
from MSG_V3_THREAD_PARTNERS
where thread_id = 3;

哇,谢谢,这很有魅力:)我不知道SQL对订单如此挑剔。