[英]Is there any way to execute a SELECT only if a condition in a different table is met?
有没有办法在单个查询中做到这一点? 还是我必须从外部进行管理? 它不是任何一种JOIN。
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的数据吗? 非常感谢你。
最简单的方法是:
IF ((SELECT indicator FROM configuration_table) = 1) THEN
SELECT series_id, series_code, series_name FROM series_table
END IF
当条件为假时,您没有告诉我们该怎么做。 我们不知道configuration_table
和series_table
之间的关系,因此我们找不到在单个查询中实现该关系的方法。
我已从“ 条件执行查询”中复制了此答案,“从其他条件执行此查询中复制了”。
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
应该替换为您想要的查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.