在单个查询中有没有办法做到这一点?或者我必须在外部管理它?它不是任何形式的联接。
SELECT
IF (
(SELECT indicator FROM configuration_table) = 1,
(SELECT series_id FROM series_table LIMIT 1),
''
) as if_exp
FROM
series_table
这会执行但会反复返回第一个ID,如果我取出LIMIT 1,它就不起作用,因为它只需要一个结果。但我需要的是,如果满足这个条件:
(SELECT indicator FROM configuration_table) = 1,
然后我需要返回所有这些数据:
SELECT series_id, series_code, series_name FROM series_table
有可能吗?我应该做两个查询并管理来自php的数据吗?非常感谢你。
答案 0 :(得分:3)
最简单的方法是:
IF ((SELECT indicator FROM configuration_table) = 1) THEN
SELECT series_id, series_code, series_name FROM series_table
END IF
当条件为假时,您没有告诉我们该怎么做。我们不知道configuration_table
和series_table
之间的关系,因此我们无法在单个查询中找到方法。
答案 1 :(得分:1)
我已经从IF Condition Perform Query, Else Perform Other Query这个答案复制了这个答案。
SELECT CASE WHEN ( (SELECT indicator FROM configuration_table) = 1 )
THEN
SELECT series_id, series_code, series_name FROM series_table
ELSE
<QUERY B>
END
此处Query B
应替换为您想要的查询。