我試圖運行基於條件的子查詢:MySQL的條件子查詢
SELECT `table1`.`id`, (
SELECT `table2`.`name`
FROM `table2`
WHERE `table2`.`id` = `table1`.`table2_id`
)
上table2_id
不是0
有條件所以,如果它是零,只有table1
。 id
被選中,否則table1
。 id
和table2
。 name
得到選擇性檢測。假設我稍後會內部加入表格。
我試過CASE THEN
和IF()
,但我無法使語法工作。
我使用MySQL 5.5
幾乎可以肯定完成什麼導致你後一個更好,更直接的方式。 SQL查詢的列在某些要求上是有條件的,這往往是壞表設計的標誌,因爲精心設計的數據庫模式永遠不會需要這樣的條件。另請參閱[什麼是XY問題?](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –
我不認爲你可以有結果架構依賴於查詢;查詢結果的模式對於所有行必須是統一的。不過,你可以使用'CASE'在'table2_id'爲0時選擇'NULL'。那是你要的嗎? – Patrick87
@羅伯特哈維,在兩個查詢中,是的。但是我在Node中並且一個接一個地查詢鏈接的查詢很快就失控了。我希望有一個純粹的SQL解決方案。我歡迎你提出建議,認爲。 @ Patrick87,不完全。如果'table1'.'table2_id'不是0,我想要連接表。 – Lev