2016-05-17 27 views
0

我有這兩個表:如何使用連接,但只獲取第一個表的行?

// one 
+----+-------+ 
| id | value | 
+----+-------+ 
| 1 | aaa | 
| 2 | bbb | 
| 3 | ccc | 
+----+-------+ 

// two 
+----+-------+ 
| id | value | 
+----+-------+ 
| 2 | ddd | 
| 3 | eee | 
| 4 | fff | 
+----+-------+ 

這裏是我的查詢:

SELECT one.value FROM one JOIN two ON one.id = two.id 

這裏是當前的結果:

// 4 rows 
+-----+ 
| bbb | 
|  | 
| ccc | 
|  | 
+-----+ 

這裏是預期的輸出:

// 2 rows 
+-----+ 
| bbb | 
| ccc | 
+-----+ 

正如你所看到的我只想只有one表中選擇行。我怎樣才能做到這一點?

+1

你的查詢看起來很適合我。我不認爲它會根據您的樣本數據返回4個結果,它應該返回您的預期結果。 – sgeddes

+0

和工作小提琴:http://sqlfiddle.com/#!9/a70df8/1 – sgeddes

+0

@sgeddes啊好的謝謝..我想我無法模擬我真正的問題.. – stack

回答

1

如果你試試這個在您的SQL提琴:

SELECT post_id, COUNT(*) from events 
GROUP BY post_id 
ORDER BY COUNT(*) DESC 

你可以注意到,每個qanda有幾個相關的事件,因此你越來越具有匹配post_id所有事件。

如果你期待兩排,加DISTINCT

SELECT DISTINCT q.id, ee.table_code, q.subject 
FROM 
    qanda q JOIN 
    events ee on ee.post_id = q.id and 
     ee.author_id = 31 and 
     ee.table_code = 15 
+0

謝謝.. upvote – stack

+0

你知道嗎?我想要得到的只是一個主題,只有一行,但有時'subject'是空的,然後我需要使用'related'列並找到它的主題。那可能嗎? – stack

+0

查看'CASE WHEN ... THEN ...'結構。 – Bulat

1

這會爲你工作

SELECT table1.value FROM table1, table2 WHERE table1.id = table2.id 

這基本上相等加入

你可以參考更多的等加入這裏here

+0

謝謝.. upvote – stack

相關問題