mysql - SQL 计数限制结果

标签 mysql sql pdo

我在执行以下查询时遇到问题:

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,因此我像往常一样在 SELECT 之后添加此内容进行检查。 :count(1) AS counter 。但是,这会影响结果。

How it should be .

How it is with the count.

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

编辑:

我想确定是否有结果,是或否。我的正常方式是使用 count(1) AS counter ,并按如下方式检查计数器的值:

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

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

那么:我该如何检查这一点,最好是在单个查询中?

最佳答案

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

听起来您想要相当于 T-SQL 的 @@ROWCOUNT。据我所知,这里讨论的是

Does Mysql have an equivalent to @@ROWCOUNT like in mssql?

这里

obtain row count in mysql query itself

也许其中一些对你有用。

关于mysql - SQL 计数限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18420244/

相关文章:

mysql - 在Mysql Workbench中设置外键

SQL 选择列中的不同值/列中的动态值计数

sql - 在不违反约束的情况下交换两个数据库行

PHP、MySQL、PDO 事务 - 调用 commit() 后是否可以使用 rollBack()?

javascript - ajax 和 PDO 变量作为 WHERE 的条件

mysql - 如何在mysql中将默认日期时间设置为系统日期时间

javascript - 刷新 Express NodeJS API 的内容

python - SQL 将如何注入(inject)这个?

SQL 查询 : How to rearrange the output (Transpose? )

php - PDO - 真实的事实和最佳实践?