mysql if函数 - 子查询作为条件[关闭]
Posted
技术标签:
【中文标题】mysql if函数 - 子查询作为条件[关闭]【英文标题】:mysql if function - subquery as a condition [closed] 【发布时间】:2012-11-30 04:22:11 【问题描述】:我相信以下查询是不言自明的:
SELECT IF (SELECT COUNT(*) FROM mytable > 0, 'yes', 'no');
为什么它不起作用?我应该如何纠正它?
【问题讨论】:
可能是因为它的语法无效。你想在这里做什么? 阿萨德,您能说得更具体些吗?我很清楚这是一个无效的语法 使用 if, then else.. REf dev.mysql.com/doc/refman/5.0/en/if.html 亲爱的选民,我对你的决定感到惊讶。你能解释一下你发现这个问题有什么问题吗?我正在做一些对我来说似乎很完美的事情,但发现它不起作用。显然有些东西我不知道/看不到。有什么比询问可能会立即知道的其他人更自然的呢? 要同意 shealtiel 并走得更远一点,我认为 John Topley 去年的编辑显然已经覆盖了亲密的选民。关闭的笔记应该更改或删除,谢谢。 【参考方案1】:将子查询括在括号中:
SELECT IF ((SELECT COUNT(*) FROM mytable), 'yes', 'no');
【讨论】:
谢谢!我是否总是必须将任何子查询括在括号中? 是的。见这里:dev.mysql.com/doc/refman/5.0/en/subqueries.html【参考方案2】:这就是你想要的?
SELECT IF(COUNT(*) > 0, 'yes', 'no') FROM mytable;
1:
SELECT
t1.*,
(SELECT IF(COUNT(*) > 0, 'yes', 'no') FROM mytable) AS col1
FROM
table t1;
2:
SELECT
t1.*,
t2.*
FROM
table t1,
(SELECT IF(COUNT(*) > 0, 'yes', 'no') AS col1 FROM mytable) t2
【讨论】:
谢谢,但不,因为这是一个更复杂的查询的一部分 然后,另外两个变体 - 检查答案。 感谢您的多变回答!【参考方案3】:试试这个:
SELECT IF((SELECT COUNT(*) FROM mytable) > 0, 'yes', 'no');
【讨论】:
【参考方案4】:如果您的查询更复杂并且这只是一个简化的问题,我认为这对您来说是更好的解决方案
SELECT IF ( (SELECT COUNT(*) AS counter FROM myTable HAVING counter>0) , 'yes', 'no')
因此您可以进行更复杂的检查(即计数器 > N 或多个条件)
【讨论】:
以上是关于mysql if函数 - 子查询作为条件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章