MySQL中的If语句
我想在MySQL查询中使用if语句来选择数据库中的所有信息,其中。。。如果返回true,则返回名为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,这将是结果,但我认为这是不必要的复杂,因此这只是一个演示:
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;