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函数 - 子查询作为条件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL子查询

mysql——多表——子查询——示例

mysql查询子查询连接查询

mysql 子句子查询连接查询

mysql常用基础操作语法~~子查询命令行模式

mysql 子查询 group by的使用