我对以下查询有疑问:
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
。但是,这会影响结果。
应该如何。
我已经看到这可能是一个问题,因为也有一个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),这似乎弄乱了结果。
那么:我怎样才能检查这个,最好是在一个查询中?