如果表中的主键不等于另一个表中的forign键,如何从主键中选择数据?

时间:2013-05-06 20:49:36

标签: mysql select join where

这就是我所拥有的: 1.我有一个名为“International_Codes”的表,有2列(int_code_id,desc) 2.我有另一个名为“size_charts”的表,它有(int_code_id,xs,s,m,l,xl)

我有一个“选择列表”,其中包含除“size_charts”表中已有的所有“国际代码”。

这就是我的所作所为:

SELECT international_codes.int_code_id, international_codes.desc
FROM   international_codes, size_charts
WHERE  international_codes.int_code_id <> size_charts.int_code_id

它给了我重复的条目和错误的数据。 我也尝试使用join left,但得到错误的数据。

1 个答案:

答案 0 :(得分:1)

你应该使用LEFT JOIN:

SELECT international_codes.int_code_id, international_codes.desc
FROM   international_codes LEFT JOIN size_charts
       ON international_codes.int_code_id = size_charts.int_code_id
WHERE  size_charts.int_code_id IS NULL

将返回international_codes的所有行,只返回匹配的size_charts行。如果没有匹配,size_charts.int_code_id将为NULL。

选择size_charts.int_code_id IS NULL所有行将返回size_charts表中没有匹配的international_codes中的所有行。