排除在已连接表中具有特定值的记录

时间:2012-09-18 14:26:19

标签: mysql

ID      Colour           colour     Size
== Table 1 ==          ====   Table 2   ====
1.**  |  **Blue**     **Blue**    |     Big
2.    |    Red        **Blue**    |     Average
3.    |    Yellow     **Blue**    |   **Small**
4.    |    Orange       Purple    |     Big
5.    |    Pink         Grey      |     Average
6.    |    Green        Red       |     Big

嗨,

在上表中,在MySQL中我需要返回任何没有值'Small'的ID。我遇到了麻烦,好像我告诉它不包括'尺寸',因为'小'仍然返回'ID 1'。因为蓝色仍然具有允许的值(Big + Average)。 我需要一个完全忽略Blue的语句(因此不返回ID 1),因为它与表2中的颜色链接很小。

道歉,如果我把它弄得比这更令人困惑。我是新手来交叉引用两个表。

Select Table1.ID
from Table1, Table2
where Table1.colour = Table2.colour
and table2.size != Small

我想我需要一个内连接查询,或者不存在语句?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

无需内连接。但是你有语法错误:

Select Table1.ID
from Table1, Table2
where Table1.colour = Table2.colour
and NOT EXISTS 
(SELECT T3.size FROM Table2 T3 WHERE 
  T3.size = 'Small' AND T3.colour = Table1.colour);