11

我相信以下查询是不言自明的:

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

为什么它不起作用?我应该如何纠正它?

4

4 回答 4

24

将子查询括在括号中:

SELECT IF ((SELECT COUNT(*) FROM mytable), 'yes', 'no');
于 2012-12-12T12:51:15.567 回答
4

这是你想要的吗?

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
于 2012-12-12T12:51:47.733 回答
3

如果您的查询更复杂并且这只是一个简化的问题,我认为这对您来说是更好的解决方案

SELECT IF ( (SELECT COUNT(*) AS counter FROM myTable HAVING counter>0) , 'yes', 'no')

所以你可以做更复杂的检查(即计数器> N或多个条件)

于 2012-12-12T12:58:10.833 回答
0

试试这个:

SELECT IF((SELECT COUNT(*) FROM mytable) > 0, 'yes', 'no');
于 2012-12-12T12:56:39.520 回答