2013-03-08 27 views
0

我的mysql查詢有一個微不足道的問題。我只想顯示訂單狀態不同於6的行。但id_order有多個雕像這意味着如:mysql查詢不顯示行不等於值

id_order = 8421 
**has two statuses:** 
id_order_state=8 and 
id_order_state = 6. 

我這裏是我的表:

SELECT * FROM order_history WHERE id_order_state != 6 (but here I need more code that I can't handle) 

感謝所有幫助

編輯:link

我嘗試:訂單8421,8422不應顯示在結果中

+0

如果您在您的問題中針對SQLFiddle中的數據集運行查詢,那麼您將獲得訂單狀態不等於6的所有行。您還需要什麼?例如,是否要排除所有*有*狀態爲6的訂單? – 2013-03-08 11:09:57

+0

準確地說,我希望它「排除所有有狀態爲6的訂單」 – Marcos 2013-03-08 11:12:26

回答

1

嘗試:

SELECT i.* FROM order_history i 
left join order_history e 
     on i.id_order = e.id_order and e.id_order_state = 6 
WHERE e.id_order_hitory is null 
+0

完美,像我想要的那樣工作。謝謝。 – Marcos 2013-03-08 11:17:17

1

試試這個

> SELECT * FROM order_history WHERE id_order_state <> 6 

> SELECT * FROM order_history WHERE id_order_state NOT IN (6) 
+0

但是我的鋼在結果中得到了id_order(8421,8422) - 但我不會。請參閱我的表格:http://sqlfiddle.com/#!2/a166f/6 – Marcos 2013-03-08 11:09:43

0

就這樣?

SELECT * 
FROM order_history 
WHERE id_order NOT IN 
(SELECT id_order FROM order_history WHERE id_order_state = 6); 
+0

你的答案也不錯。 – Marcos 2013-03-08 11:24:19