是否只有在满足不同表中的条件时才能执行SELECT?

时间:2016-07-18 07:30:32

标签: mysql

在单个查询中有没有办法做到这一点?或者我必须在外部管理它?它不是任何形式的联接。

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的数据吗?非常感谢你。

2 个答案:

答案 0 :(得分:3)

最简单的方法是:

IF ((SELECT indicator FROM configuration_table) = 1) THEN
    SELECT series_id, series_code, series_name FROM series_table
END IF

当条件为假时,您没有告诉我们该怎么做。我们不知道configuration_tableseries_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应替换为您想要的查询。