我是SQL編程的新手,並且有點麻煩。我有以下MySQL的腳本:有條件的NULL列的MySQL SELECT
SELECT
MyPrimaryTable.PrimaryKey, Alias1.String AS Output1,
CASE
WHEN Id2 IS NOT NULL THEN Alias2.String
ELSE ""
END AS Output2
FROM MyPrimaryTable, MySecondaryTable AS Alias1, MySecondaryTable AS Alias2
WHERE
MyPrimaryTable.Id1 = Alias1.Id1
AND ((MyPrimaryTable.Id2 IS NULL) OR (MyPrimaryTable.Id2 = Alias2.Id2));
基本上,我有一個包含兩個ID,ID1和ID2一個主表,和我想這些ID的每一個用細繩在二次表及關聯在SELECT結果中顯示這些字符串。但是,主表中的第二個ID允許爲NULL。在這種情況下,我希望的輸出是預期的第一個字符串,第二個字符串爲空(「」)。我寫的腳本是這樣做的,只是它爲每個可能的字符串添加了一個新行,儘管所有行看起來都是一樣的。
預期結果有可能的字符串Foo1和Foo2,Foo3和Foo4,與表中的兩個條目:
PK Output1 Output2
1 Foo1 Foo4
2 Foo2
我得到什麼:
1 Foo1 Foo4
2 Foo2
2 Foo2
2 Foo2
如何清潔這並讓它按預期工作?謝謝。
編輯:我希望不要使用DISTINCT,因爲我想在VIEW中使用它,而DISTINCT將使視圖不可更新。
你有沒有考慮GROUP_CONCAT()? http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat – 2011-05-02 08:23:08