2011-10-26 41 views
1

我有一個mysql問題。比方說,比如我有兩個表具有以下值:顯示錶2中的值但不是表1中的值

  • 表1:apple, orange, banana, kiwi, jackfruit, mango, strawberry
  • 表2:apple, orange, banana, jackfruit

我的問題是如何讓一個查詢只會選擇/顯示值:

kiwi, mango, strawberry 

任何人都可以提供示例代碼呢?

回答

0
select column from table1 where column not in (select column from table2) 
+0

對於'table2'中的大集合,* *效率極低* – Phil

+0

@Phil即使'column'是表上的索引? – Icarus

+0

謝謝,那麼,你將如何獲取/顯示查詢的值? – theglove

4

選項#1

SELECT table1.fruit FROM table1 
LEFT JOIN table2 
    ON table1.fruit = table2.fruit 
WHERE table2.fruit IS NULL 

選項#2

SELECT table1.fruit FROM table1 
WHERE NOT EXISTS (
    SELECT 1 FROM table2 
    WHERE table2.fruit = table1.fruit 
) 

我不得不看解釋計劃召回這是更有效,但它真的取決於你所創建的任何索引。

+0

嗨,謝謝你的回答。但'LEFT JOIN'的目的是什麼?謝謝 – theglove

+0

@theglove大量可用的文檔。請嘗試http://en.wikipedia.org/wiki/Join_(SQL)#Left_outer_join – Phil

+0

如果列名與其他列不同,但列的值相同。例如table.abc一個table.zxc他們有不同的表名,但他們的一些值匹配。是否可以合併? – theglove

相關問題