这是我的左连接查询:
SELECT *
FROM `table1` as t1
LEFT JOIN `table2` as t2
on t2.table1_id = t1.id // here joins all id,s of table1 in table 2.
where t1.master_id = 72
在这里,我希望加入的方式只有t2.table1_id
=从t1.id
获取的t1.master_id
的第一个ID。
返回TABLE
ID master_id t1_name t2_name
3 72 A A1
3 72 B A2
6 72 C A3
6 72 D A4
预期表
ID master_id t1_name t2_name
3 72 A A1
3 72 B A2
6 72 C
6 72 D
期望表只返回列t2_name中的第一个基于id的结果!
如果t1.id = 3
的第一个id(第一个数组id元素),则查询如下所示:
SELECT *
FROM `table1` as t1
LEFT JOIN `table2` as t2
on t2.table1_id = t1.id AND t2.table1_id = 3
where t1.master_id = 72
但是我们如何使用单个查询动态制作它?
答案 0 :(得分:1)
您可以使用案例来检查master_id和ID是否相等。当ID和master_id相等时,此语句返回t2_name,否则返回一个空字符串。在大型数据库上使用此查询时,这可能不是最快的选项 我希望这就是你要找的东西:)
SELECT ID, master_id, t1_name, t2_name =
CASE ID
WHEN master_id THEN t2_name
ELSE ""
END
FROM 'table1' as t1
JOIN 'table2' as t2
ON t2.table1_id = t1.id
WHERE master_id = 72
答案 1 :(得分:0)
如果执行LEFT JOIN,您将只获得NULL(空插槽)而不是A3和A4如果table2上最后两行table1没有匹配。如果您能向我们展示两个表格中的一些数据,那将非常有用。