在MySQL表上创建条件LEFT JOIN“ON”

时间:2015-03-22 11:06:57

标签: php mysql sql database join

这是我的左连接查询:

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

但是我们如何使用单个查询动态制作它?

2 个答案:

答案 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没有匹配。如果您能向我们展示两个表格中的一些数据,那将非常有用。