MySQL中的If语句

MySQL中的If语句,mysql,if-statement,Mysql,If Statement,我想在MySQL查询中使用if语句来选择数据库中的所有信息,其中。。。如果返回true,则返回名为aid的列的计数 伪代码: IF (COUNT(`AID`) > 0) { SELECT * FROM `a_votes` WHERE `aid` = '1' } ELSE { RETURN 'No Rows' } 你能告诉我怎么做吗 编辑--- 我尝试了以下查询,但收到错误操作数应包含1列 如果我想将您的伪代码转录到SQL,这将是结果,但我认为这是不必要的复杂,因此这只是一个演示:

我想在MySQL查询中使用if语句来选择数据库中的所有信息,其中。。。如果返回true,则返回名为
aid
的列的
计数

伪代码:

IF (COUNT(`AID`) > 0) {
  SELECT * FROM `a_votes` WHERE `aid` = '1'
} ELSE {
  RETURN 'No Rows'
}
你能告诉我怎么做吗

编辑---

我尝试了以下查询,但收到错误
操作数应包含1列


如果我想将您的伪代码转录到SQL,这将是结果,但我认为这是不必要的复杂,因此这只是一个演示:

/* this query might return zero rows, so beware */
SELECT
  (SELECT COUNT(`aid`) > 0 FROM `a_votes`) AS the_count,
  the_row.*
FROM
  (SELECT * FROM `a_votes` WHERE `aid` = '1') AS the_row
使用
左联接时必须返回至少一行:

SELECT *
/* count will create exactly 1 row */
FROM      (SELECT COUNT(`aid`) > 0 FROM `a_votes`)    AS the_count
/* this is allowed to return 0,1,...N rows */
LEFT JOIN (SELECT * FROM `a_votes` WHERE `aid` = '1') AS the_row
如果没有行匹配,简单的
COUNT(*)
将返回一行
0
作为计数。将通常的
COUNT(*)
查询包装到一个外部查询中以消除该条件将不会返回任何行

编辑: 多亏了,这是一个更好的解决方案:

SELECT COUNT(*) as COUNT
FROM a_votes
WHERE aid = '1'
HAVING COUNT(*) > 0;

你会在哪里使用结果?您如何知道执行了哪个分支?我知道查询将返回计数,或者它将返回表
a_vots
Hmmm中的相关行,如果
count(AID)==0
,则返回第二个查询没有意义。返回零行不是更好吗?当然,如果它到达else语句,它将返回0-那么为什么在那一点上再次计数?没错,我将更新问题。如果我想设置大于或小于该值的条件,如何编写此SQL查询?我添加了“>0”,如果你是这个意思。不要忘记将
COUNT
重命名为其他名称(不是函数,而是给定的名称),或者将其用双引号括起来。需要时,您的查询将如何返回
SELECT*FROM a_vots
?无法将您的查询重写为以下内容:
SELECT COUNT(*)FROM。。。拥有COUNT(*)>0
?@biziclop你说得对:
拥有
就可以了!(我不敢相信我没有看到)
SELECT * FROM (
    SELECT COUNT(*) as COUNT FROM a_votes WHERE aid = '1'
) x WHERE COUNT > 0;
SELECT COUNT(*) as COUNT
FROM a_votes
WHERE aid = '1'
HAVING COUNT(*) > 0;