我的问题是:从同一个表加入时是否可以输出多行?例如,使用此代码,我希望它输出 2 行,每个表一个。相反,它的作用是给我 1 行的所有数据。
SELECT t1.*, t2.*
FROM table t1
JOIN table t2
ON t2.id = t1.oldId
WHERE t1.id = '1'
更新
好吧,我对 UNION/UNION ALL 的问题是:我不知道 t1.oldId 值等于什么。我只知道 t1 的 id。我试图避免使用 2 个查询,所以有没有办法可以做这样的事情:
SELECT t1.*
FROM table t1
WHERE t1.id = '1'
UNION
SELECT t2.*
FROM table t2
WHERE t2.id = t1.oldId
样本数据
messages_users
id message_id user_id box thread_id latest_id
--------------------------------------------------------
8 1 1 1 NULL NULL
9 2 1 2 NULL 16
10 2 65 1 NULL 15
11 3 65 2 2 NULL
12 3 1 1 2 NULL
13 4 1 2 2 NULL
14 4 65 1 2 NULL
15 5 65 2 2 NULL
16 6 1 1 2 NULL
Query:
SELECT mu.id FROM messages_users mu
JOIN messages_users mu2 ON mu2.latest_id IS NOT NULL
WHERE mu.user_id = '1' AND mu2.user_id = '1' AND ((mu.box = '1'
AND mu.thread_id IS NULL AND mu.latest_id IS NULL) OR mu.id = mu2.latest_id)
这个查询解决了我的问题。但似乎我的问题的答案是不要使用 aJOIN
而是 a UNION
。