SELECT a.*, IF(b.pid=a.id,b.id,0) AS bpid
FROM table1 a, table2 b
ORDER BY a.datetime DESC;
我在table1 a中有十五条记录,在table2 b中有两条记录b.pid=a.id
。
在任何给定时间,表b中只有其中一条记录被拉入结果中。两者都应该作为bpid拉入,但只有两者中的后者才行。
我也尝试过使用CASE
(事先尝试CASE
):
SELECT a.*, (CASE WHEN b.pid=a.id THEN b.id ELSE NULL END) AS bpid
FROM table1 a, table2 b
ORDER BY a.datetime DESC;
我错过了什么?
为清楚起见:我从结果中得到了table1a中的所有15条记录,但没有得到来自table2 b的两条记录。
答案 0 :(得分:0)
您没有正确加入表格。作为提示只是停止在FROM子句中使用逗号,这将有助于您考虑连接应该是什么。
/* for all records */
SELECT
a.*
, b.id AS bpid
FROM table1 a
LEFT JOIN table2 b ON a.id = b.id
ORDER BY a.DATETIME DESC
或
/* for only matching records */
SELECT
a.*
, b.id AS bpid
FROM table1 a
INNER JOIN table2 b ON a.id = b.id
ORDER BY a.DATETIME DESC