【发布时间】:2013-10-02 10:20:53
【问题描述】:
想要的结果:
仅返回遇到的第一个真正的 SELECT 表达式的结果。
解释:
所以,我有三个不同的 SELECT 表达式:
- SELECT * FROM table WHERE column1 = 'sometext' AND column2='1'
- SELECT * FROM table WHERE column1 = 'someothertext' AND column2='2'
- SELECT * FROM table WHERE column1 = 'somethirdtext' AND column2='3'
我想得到 1 的结果。如果 1. 返回 NULL,我想要选择编号 2 的结果。如果选择编号 2. 返回 NULL,我想使用选择编号 3。等等。
请注意,对于每个为真的条件,我预计会返回多行 - 我只想要 SELECT 1) 2) 或 3)(按此顺序)的结果
只返回一个 SELECT 表达式的结果很重要,所以即使 2. 和 3. 会返回一些东西,我也只想要来自 1 的结果。
我现在拥有的代码遵循预期的逻辑,但是当我有多个行被以下某些 SELECTS 返回时,它给了我错误:
1242 - 子查询返回多于 1 行
现在的代码:
SELECT IFNULL( (SELECT * FROM table WHERE column = 'sometext'), IFNULL( (SELECT * FROM table WHERE column = 'someothertext'), IFNULL( (SELECT * FROM table WHERE column = 'somethirdtext'), 0 ) ) )
【问题讨论】:
-
你能给我们一个样本数据集吗?
标签: mysql sql control-flow