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