比较两个不同的表mySQL

时间:2013-01-28 18:51:29

标签: mysql

我有一个mySQL数据库,我想从一个表(tableA)获取值(field1),从另一个表(tableB)获取值(Field 2)然后比较它们。如果在表B字段2中找到表A中的字段1,则应在我的选择中将它们排除。

SELECT task_name, tasks.task_id
FROM tasks
INNER JOIN custom_fields_values ON value_object_id <>task_id

这是我尝试的但它似乎不起作用。它一式三份地显示task_id,这是奇怪的。 Value_object_id只有两个字段24和32. task_id的编号为1-40,基本上我需要一个1-40的列表,没有字段值24和32.

SELECT task_name, tasks.task_id
FROM tasks
INNER JOIN custom_fields_values ON value_object_id =task_id

然而这很好。

2 个答案:

答案 0 :(得分:2)

这是因为您使用的是INNER JOIN - 请尝试使用LEFT JOIN

SELECT tasks.task_name, tasks.task_id
FROM tasks
LEFT JOIN custom_fields_values ON custom_fields_values.value_object_id=tasks.task_id
WHERE custom_fields_values.value_object_id IS NULL
祝你好运。

答案 1 :(得分:1)

您需要 anti-semijoin

SELECT task_name, task_id
FROM tasks AS t
WHERE NOT EXISTS
      ( SELECT *
        FROM custom_fields_values AS c
        WHERE c.value_object_id = t.task_id
      ) ;