选择连接语句不起作用

时间:2014-08-14 09:26:20

标签: mysql sql

我正在尝试从下一个语句创建一个输出数组:

我有2张桌子。在每个表中都有“material_code”,它起主要作用。我想从 table1 中选择 material_code ,其中它等于来自 table2 material_code 并将它们连接到 > status (来自table2)等于 0

这是我到目前为止所得到的。

SELECT material_code FROM table1 
LEFT JOIN table2 ON material_code WHERE status IS 0

解决方案:

SELECT material_code FROM table1 
LEFT JOIN table2 ON table1.material_code = table2.material_code WHERE status = 0

谢谢大家。

5 个答案:

答案 0 :(得分:1)

你应该尝试这个:

SELECT 
    material_code 
FROM table1 
LEFT JOIN table2 
ON table1.material_code = table2.material_code 
WHERE status = 0

答案 1 :(得分:1)

听起来像是想要INNER JOIN

SELECT material_code FROM table1 
INNER JOIN table2 USING (material_code) WHERE status = 0

如果使用LEFT JOIN,您将获得仅存在于table1而不存在于table2中的记录。如果两个表中的列名相同(至少在MySQL中),您还希望使用USING而不是ON

答案 2 :(得分:0)

WHERE status IS 0

应该是

WHERE status = 0

仅当null时必须IS NULL

你也错过了加入条件(ON table1.material_code = table2.material_code

答案 3 :(得分:0)

如果在bot表中有一个字段'status',您可以在字段名称前使用显式表名,仅在table1的'status'上添加条件,如:

WHERE table2.status = 0

答案 4 :(得分:0)

试试这个SQL代码。 INNER JOIN在您的情况下更好。

SELECT tb1.material_code 
FROM table1 as tb1 
INNER JOIN table2 as tb2 ON tb1.material_code=tb2.material_code 
WHERE tb2.status = 0