2012-08-02 178 views
0

是否可以在子查詢中顯示結果中的某些內容。從結果中排除某些在子查詢中的結果mysql

示例: table1:有4個數字,1,2,3,4。 從表1因此選擇*呈現4結果

是更多鈔票,以使:

select * from table1 where not exists(select * from table1 where num = 3) 

所以結果是1,2,4。基本上從結果中刪除子查詢結果中的東西。

我知道存在不工作,因爲它只給出真假,但任何其他手段?

謝謝大家。

+1

在這個例子中,select * from table1其中num <> 3'會做伎倆。 – Matt 2012-08-02 18:42:43

+0

自己嘗試 – codingbiz 2012-08-02 18:43:29

+0

@Matt,但答案是:這是可能的;) – arnoudhgz 2012-08-02 18:46:14

回答

0

select * from table1 where num <> 3;

OR

select * from table1 where id NOT IN (select id from table2 where num = 3);

細說更多你想要什麼。

+0

謝謝,我想我試過了與選擇*在子查詢這就是爲什麼它沒有工作。 – vexen 2012-08-02 19:12:07

+0

現在它的工作? – Kalpesh 2012-08-02 19:13:12

+0

是的謝謝你它按計劃完美工作,只是愚蠢的我不知道MySQL太好,以至於我自己想起它=) – vexen 2012-08-02 23:39:48

0

您可以使用NOT IN,但子查詢必須只返回一列(同樣的事情與我認爲的存在一致)。類似這樣的:

SELECT * FROM table WHERE column1 NOT IN (SELECT column1 FROM table WHERE column2 = 3) 
+0

'NOT IN'會導致較慢的查詢,然後不存在的聲明! – arnoudhgz 2012-08-02 18:48:57

+0

是的你是對的 – Oussama 2012-08-02 19:08:27

+0

thx,這是當我試圖在子查詢中使用selec *時出現問題,thx解釋我只需要使用1列。 – vexen 2012-08-02 19:12:54