Mysql 海螺组替代品
我无意中发现了这个问题,似乎无法掌握它的窍门。 我有三张桌子: MSG_V3_线程 MSG\u V3\u线程\u用户 MSG\u V3\u线程\u合作伙伴 现在,我需要做的是最终得到这张表: (注:上图为Photoshop) 我似乎找不到解决这个问题的办法。我设法做了一个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_
小组讨论
,它给了我正确的结果,但它不是我需要的格式。我现在也有这个疑问:
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对订单如此挑剔。