【问题标题】:mysql if function - subquery as a condition [closed]mysql if函数 - 子查询作为条件[关闭]
【发布时间】: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 去年的编辑显然已经覆盖了亲密的选民。关闭的笔记应该更改或删除,谢谢。

标签: mysql subquery conditional


【解决方案1】:

将子查询括在括号中:

SELECT IF ((SELECT COUNT(*) FROM mytable), 'yes', 'no');

【讨论】:

【解决方案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 或多个条件)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 2013-05-09
      • 2013-03-12
      • 2022-12-06
      • 1970-01-01
      • 2015-04-28
      • 2012-04-05
      相关资源
      最近更新 更多