2016-07-06 33 views
0

我需要對Publications以及AuthorsPublications鏈接進行查詢。SQL - 當RIGHT表有多行時如何避免帶有LEFT JOIN的重複?

+0

當LEFT JOIN時,將右側表條件放在ON子句中以獲得真正的左連接行爲。 (在WHERE,你會得到經常的內部連接結果。) – jarlh

+0

嗨,謝謝你的回答,但我該怎麼做? – 118218

+0

只需將表節點的條件從WHERE移動到ON。 I.e'... LEFT JOIN節點作爲author_reference_node ON author_reference_node.nid = author_reference.field_author_nid AND(node.title LIKE:title AND node.language =:language2 AND node.type =:type)...'。 – jarlh

回答

0

更新:我明白了,現在,你需要的是這樣的: Concatenate many rows into a single text string?

- 老答案 - 可以篩選出多個結果與使用DISTINCT子句(http://www.w3schools.com/sql/sql_distinct.asp

例如SELECT DISTINCT node.title,node.type ...

+2

重複時,「distinct」很少是答案。重複可能是由不正確的「加入」或不符合預期的數據造成的。 「Distinct」消除症狀,而不是原因。 – HoneyBadger

+0

然而,當處理大量的列和左/右連接與內部連接時,distinct有時是答案。這麻煩的空可以做各種事情 – MageeWorld

+0

我已經嘗試過,DISTINCT子句不起作用在我的情況下... – 118218

0

以這種方式加入時,您不能禁止「重複」,假設RHS有多個行連接到指定連接屬性上給定的LHS元組。

我建議你正確使用內連接。其標準用途是統一主從關係。如果您正在使用它來實現任何其他的語義,你不能抱怨奇怪的結果,因爲它做正是什麼是應該的情況做(這徵收),爲它是原本打算服務。