从表中选择数据并比较两个表

时间:2014-09-01 05:38:16

标签: mysql sql

我有两张桌子。

表一名单

ID  device_id 

1      2

2      2

3      4

表二名称同步

ID  devide_id  list_id

1      4         2

现在,如果我想从列表表中为devide_id选择所有数据,那么显示的两行原因同步表devide_id 4有一个项目。

我正在尝试此查询

SELECT s.*
FROM list AS s,sync AS sc
WHERE s.device_id = 4 AND sc.device_id=4 AND sc.list_id=s.id

但不起作用

预期结果

对于device_id 4

ID  device_id 

 3      4

 2      2

对于device_id 2

ID  device_id 

1      2

2      2

2 个答案:

答案 0 :(得分:1)

你问这个问题的方式有点难以理解。我理解的方式是,

您想要从 device_id

中具有条件的表列表中检索所有数据

但是根据你的表格只会显示一条记录。

如果可能,请修改问题,以便我们能够轻松理解。

答案 1 :(得分:1)

我能看到第一个例子的唯一方法就是使用这样的东西:

SELECT s.*
FROM list AS s,sync AS sc
WHERE s.device_id = 4 OR (sc.device_id=4 AND sc.list_id=s.id)

(注意:未经测试,可能需要调整)

因为您的示例输出 设备ID为4 ,它从同步表中获取设备ID为4。