2
我試圖在此處實現以下內容。SELECT語句中的條件子查詢
我有3個表:
- 塊
- 項目
- 成分
我查詢成分和根據結果,我想子查詢或從加入一些列塊或項目。
我在我的select語句中設法創建了條件子選擇1列(name
),但如果我想選擇多於一列的列,例如SELECT name, material_id
,我得到以下錯誤:
Only a single result allowed for a SELECT that is part of an expression
我在這裏看到許多類似的案件在SO,但不能管理得到這個權利。
SELECT
`crafting_recipes`.`ingredient_id`, `crafting_recipes`.`ingredient_table`,
CASE
WHEN
`crafting_recipes`.`ingredient_table` = 'blocks' THEN
(SELECT `name` FROM `blocks` WHERE `id` = `crafting_recipes`.`ingredient_id`)
ELSE
(SELECT `name` FROM `items` WHERE `id` = `crafting_recipes`.`ingredient_id`)
END
FROM
`crafting_recipes`
WHERE
`crafting_recipes`.`result_id` = 15 AND
`crafting_recipes`.`result_table` = "blocks"
由於在子查詢中選擇多個列不被支持,因此實現此目的的正確方法是什麼?
你可能需要外連接在這裏。 – 2010-11-14 15:59:02
您的方法可以工作,並且更乾淨,但不允許出現多個結果。你有解決方案嗎?謝謝 – richard 2010-11-14 16:08:44
你是什麼意思「多個結果」? select子句中的子選擇只允許返回恰好一個值。此方法正常工作,因爲如果多於一行匹配外部聯接,則會得到多於一行的結果。 – Donnie 2010-11-14 16:29:43