mysql - SELECT 查询 IF CONDITION

标签 mysql sql

我的博客页面中的 SELECT 查询有一个问题。

当评论状态=1 时,我想要每个博客的评论数。

我正在申请以下查询..

SELECT CONCAT(u.first_name," ",u.last_name) name, r.*,
       IF(c.status=1,COUNT(c.id)) as comment
  FROM users u 
 RIGHT JOIN resources r ON u.id = r.created_by 
  LEFT JOIN comments c ON r.id = c.resource_id
 WHERE r.type = 1 
   AND r.status=1 
 GROUP BY r.id 
 ORDER BY r.created_date DESC 
 LIMIT 0,5

但它给出语法错误..

 Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your 
 SQL syntax; check the manual that corresponds to your MariaDB server version for the right 
 syntax to use near ') as comment FROM users u RIGHT JOIN resources r ON u.id = r.created_by 
 LEFT JOI' at line 1

请告诉我哪里错了。

谢谢

最佳答案

If 语句包含三个表达式。首先是表达式,其次是条件为真时返回的值,第三个是条件为假时返回的值,因此您缺少第三个表达式。 试试下面的代码

SELECT CONCAT(u.first_name," ",u.last_name) name,r.*,IF(c.status=1,COUNT(c.id), 0) as comment
FROM users u RIGHT JOIN resources r ON u.id = r.created_by 
LEFT JOIN comments c ON r.id = c.resource_id
WHERE r.type = 1 
AND r.status=1 
GROUP BY r.id 
ORDER BY r.created_date DESC 
LIMIT 0,5

关于mysql - SELECT 查询 IF CONDITION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46643963/

相关文章:

mysql - 无法将外键添加到现有表

php - 如何修复 CakePHP 中的 "Error: The view for SrcController::view() was not found."?

mysql - 在 codeigniter 查询生成器中使用 union,并在虚拟 mysql 列中进行过滤

mysql - SQL:如果*条件*在另一行,则更新一行

mysql - SQL 查询连接无法正常工作

mysql - 面试中的 SQL 任务

python - Django - 如何使用数据库表查找

PHP SQL 一次更新多行

C# SqlConnection 连接字符串

php - 使用 PHP 显示现有 div 中的 MySQL 值