排除两个字段不具有特定值的结果

时间:2010-03-18 08:57:54

标签: sql mysql

我有两个表,其中存储了一些事务性内容。每个表中每user_id个记录很多。表1和表2具有彼此一对一的关系。我想从两个表中提取记录,但我想排除在两个表中具有特定值的记录。我不在乎他们是否都没有这些值,或者只有一个值,但两个表都不应该同时具有这两个值。

例如:

SELECT t1.id, t1.type, t2.name
  FROM table1 t1
  INNER JOIN table2 t2 ON table.xid = table2.id
  WHERE t1.user_id = 100
  AND (t1.type != 'FOO' AND t2.name != 'BAR')


因此,t1.typeENUM类型,有大约10个不同的选项,而t2.name也是ENUM类型,有2个选项。

我的预期结果看起来有点像:

1, FOO, YUM
2, BOO, BAR
3, BOO, YUM

但相反,我得到的只是:

3, BOO, YUM

它似乎过滤掉了所有以“FOO”为类型且“BAR”为名称的记录。

我们正在使用MySQL 5.1 ......

1 个答案:

答案 0 :(得分:6)

如果我理解您的问题,您应该更改查询以使用OR

AND (t1.type != 'FOO' OR t2.name != 'BAR')

这与

相同
AND NOT (t1.type = 'FOO' AND t2.name = 'BAR')

并删除两个条件匹配的所有行。