從單一的錶行中選擇兩行我有一個表A (Id1, Id2, someValue)
在MySQL的
我想在MySQL中實現什麼:
我SELECT
查詢應該返回 兩行:
Id1, someValue
Id2, someValue
(基於一定的條件 - 例如,其中someValue中> N)
我怎樣才能實現這一點,而無需使用UNION
?
從單一的錶行中選擇兩行我有一個表A (Id1, Id2, someValue)
在MySQL的
我想在MySQL中實現什麼:
我SELECT
查詢應該返回 兩行:
Id1, someValue
Id2, someValue
(基於一定的條件 - 例如,其中someValue中> N)
我怎樣才能實現這一點,而無需使用UNION
?
難道你不只是使用一個或?例如:
select * from A where someValue = 'x' OR someValue 'y'
結果將是(Id1,Id2,someValue),而我需要兩行(Id1,someValue)和(Id2,someValue)。 [我需要兩排] –
非常真實,對不起,沒有正確看待你的問題,最好使用聯盟! – Ric
因爲這是不可能的,而無需使用UNION
,這裏是如何與它進行歸檔此:
(SELECT ID1 as ID, someValue FROM A WHERE someValue > N)
UNION
(SELECT ID2 as ID, someValue FROM A WHERE someValue > N)
使用'UNION ALL',否則MySQL將抑制重複行,並且即使兩個查詢都返回一行,您也可能會得到一行。 –
如何:
SELECT
CASE
WHEN somecondition THEN ID1
ELSE ID2
END AS ID, someValue
FROM that_table
的somecondition
可以是表達式與您在WHERE
子句中使用的表達式類似。
我認爲這與我所尋找的非常接近。謝謝。 –
如果你需要分隔行的返回,你最好將數據庫模式拆分爲「id,someValue」。插入時,只需插入{id1_value,someValue},{id2_value,someValue},然後在檢索時從表中選擇value = someValue。你會得到你期望的回報。
如果需要涉及ID1和ID2以某種方式(讓一個鏈表或其他),你可以將相關的ID添加到該條目。該架構可能是 {id,value,related_id}。
爲什麼不使用'UNION'?我看不到任何其他方式...... –
爲什麼不使用'UNION'語句? – nfechner
我不想使用Union,因爲我不想複製整個複雜的查詢,否則它們將會是相同的。給我的查詢還剩下七張表(好吧,我知道這已經不是那麼高效了,但仍然)。這個特定的條件是與其中一個連接。 –