繁体   English   中英

SQL计数限制结果

[英]SQL count limiting results

我遇到以下查询的问题:

SELECT 
   badge.name AS badge_name, badge.description, badge.type, badges.time, user.name AS user_name 
FROM 
   badges LEFT JOIN badge ON badges.badge_name = badge.name LEFT JOIN user ON user.id=badges.user_id 
WHERE 
   user.name IS NOT NULL 
ORDER BY badges.time DESC 
LIMIT 5

现在,我想检查结果的数量是不是0,所以我通过在SELECTcount(1) AS counter之后添加它来检查,就像我一直这样做。 但是,这会影响结果。

它应该如何

怎么跟伯爵一样。

我已经看到这可能是一个问题,因为还有一个LIMIT ,但是什么是最有效的方法来规避这个? 我只是想检查是否有任何结果返回,以显示一个正确的消息,它没有结果。 我正在使用PDO ,但因为它是一个SELECT我不能使用->rowCount()来检查返回的行数。

编辑:

我想确定是否有任何结果,是或否。 我这样做的正常方法是使用count(1) AS counter ,并按如下方式检查count(1) AS counter的值:

while($row['counter'] = $STH->fetch()){
    if($row['counter'] == 0){
        // Error message
    }else{
        echo $row['badge_name'] . "etc...";
    }
}

但是 ,由于LIMIT (检查SQLFiddles),这似乎搞乱了结果。

那么:我怎样才能检查这个,最好是在一个查询中?

添加count(*) as count行数。

SELECT
   count(*) as `count`
FROM
   badges LEFT JOIN badge ON badges.badge_name = badge.name LEFT JOIN user ON user.id=badges.user_id
WHERE
   user.name IS NOT NULL

由于我并不熟悉MySQL的功能,我通常会对你的问题发表评论,但我还没有所需的代表。 所以,我必须把它作为一个“答案”。

听起来你想要相当于T-SQL的@@ ROWCOUNT。 从我能找到的内容中可以看到这里

Mysql是否与mssql中的@@ ROWCOUNT相同?

和这里

获取mysql查询本身的行数

也许其中一些对你有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM