[英]MySQL select all rows but exclude same value
我在MySQL中的所有表格如下。
+---------+-------------+---------------+ | item_no | item_name | item_location | +---------+-------------+---------------+ | ITM145 | laptop | USA | | ITM146 | camera | USA | | ITM147 | cd | USA | | ITM148 | phone | USA | | ITM149 | cd | France | | ITM150 | phone | France | +---------+-------------+---------------+
最后一個拖曳項目的位置是法國,而我在美國擁有的相同項目,我希望查詢返回給我,因為波紋管排除了位置法國的相同值。
+---------+-------------+---------------+ | item_no | item_name | item_location | +---------+-------------+---------------+ | ITM145 | laptop | USA | | ITM146 | camera | USA | +---------+-------------+---------------+
第一次嘗試
SELECT * FROM table WHERE item_location !='France' GROUP BY item_name
失敗第二次嘗試
SELECT * FROM table WHERE item_location NOT IN('France') GROUP BY item_name
嘗試使用<>
運算符代替它(這是為了省略“法國”)
SELECT * FROM table
WHERE item_location <> 'France'
GROUP BY item_name
但是如果你想得到結果
SELECT * FROM table
WHERE item_location <> 'France' AND item_name IN ('laptop','camera')
GROUP BY item_name
要獲得在法國排除item_name的結果,您可以嘗試以下操作
SELECT * FROM table
WHERE item_location <> 'France' AND item_name NOT IN (Select item_name FROM
table where item_location = 'France')
GROUP BY item_name
嘗試這個:
SELECT * FROM table
GROUP BY item_name
Having count(*) = 1
將LEFT JOIN
與self表一起使用,如下所示:
SELECT t.* FROM Table1 t
LEFT JOIN
(
SELECT item_name FROM Table1 WHERE item_location = 'France'
) t2
ON t.item_name = t2.item_name
WHERE t2.item_name IS NULL
輸出:
| item_no | item_name | item_location |
|---------|-----------|---------------|
| ITM145 | laptop | USA |
| ITM146 | camera | USA |
請參閱此SQLFiddle 。
要了解聯接,請參閱《 SQL聯接的直觀說明》 。
您只想在其中使用“筆記本電腦”和照相機,請使用SELECT * FROM country WHERE item_location ="usa" AND (item_name = "laptop" OR item_name = "camera") GROUP BY item_no
如果您想選擇
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.