从MySQL中选择记录WHERE id不包含在表中

时间:2015-11-16 16:50:13

标签: mysql

我需要帮助......我在MySQL中有三个表:price_tableitem_tabletariff_table,带有记录:

item_table中记录:

id_item | name_item
1       | Item A    
2       | Item B    
3       | Item C    
4       | Item D    
5       | Item E

tariff_table中记录:

id_tariff | name_tariff
1         | normal    
2         | promo

price_table中记录:

id_price | id_item | id_tarif
1        | 1       | 1
2        | 2       | 1
3        | 3       | 1
4        | 4       | 1
5        | 5       | 1
6        | 1       | 2
7        | 2       | 2

我想选择没有id_item的{​​{1}}。

2 个答案:

答案 0 :(得分:0)

SELECT P.id_item, I.name_item
FROM price_table P
INNER JOIN tariff_table T ON T.id_tariff = p. id_tariff
INNER JOIN item_table I on I.id_item = p.id_item
WHERE
  P.id_tariff != 2
  AND p.id_item NOT IN 
   (SELECT id_item FROM price_table WHERE id_tariff = 2)

答案 1 :(得分:0)

你可以做自我加入。

SQLFiddle Demo

这是输出: enter image description here

SELECT T.id_price,item_table.name_item
FROM
price_table T
INNER JOIN item_table ON T.id_item = item_table.id_item
LEFT JOIN
(SELECT T1.*
FROM
price_table T1
INNER JOIN price_table T2 ON T1.`id_item`= T2.`id_item` AND T1.`id_tarif` <> T2.`id_tarif`) Dup ON T.`id_item` = Dup.`id_item`
WHERE Dup.`id_item` IS NULL

希望这有帮助。