INNER JOIN对我不起作用

时间:2014-01-02 09:06:27

标签: mysql sql select join left-join

我正在尝试让我的SQL查询工作而且我失败了,所以我决定向更多有经验和熟悉SQL的人询问,因为我不是这样。

我拥有:我的数据库中有2个表,一个是“DEV”表,其中包含:id, lat, lon, login, password第二个表是“TASK”表,其中包含:id, lat, lon, address, id_dev。 Id_dev是表“DEV”的外键。

我要做的是:进行查询以获取所有没有分配任务的DEV(在给定dev.id的表“task”中没有记录)并获取另一个具有任务的DEV列表。

我希望他们分开。我尝试了一些教程:

SELECT * FROM `dev` INNER JOIN 'task' ON dev.id=task.id_dev ORDER BY dev.id;

但它对我不起作用。有什么建议吗? 亲切的问候!

3 个答案:

答案 0 :(得分:6)

如果您希望“dev”记录没有“任务”,则不应使用INNER JOIN,因为它会带回集合的交集。

一种选择是使用LEFT JOIN,例如:

SELECT      dev.* 

FROM        dev

LEFT JOIN   task
    ON      dev.id=task.id_dev 

WHERE       task.id_dev IS NULL

ORDER BY    dev.id;

答案 1 :(得分:0)

SELECT * FROM `dev` INNER JOIN 'task' ON dev.id=task.id_dev ORDER BY dev.id;

请勿在{{1​​}}上使用单引号'。查询应如下所示:

task

答案 2 :(得分:0)

使用LEFT JOIN代替INNER JOIN

试试这个:

SELECT d.* 
FROM `dev` d 
LEFT JOIN `task` t ON d.id = t.id_dev 
WHERE t.id IS NULL 
ORDER BY d.id;