php - mysql如果计数为空则将其设为零

标签 php mysql

如果在 select 语句中使用 select 语句,如果字段 most_popular 的计数为空,我如何将其设置为 0

我试过 IFNULL(SELECT COUNT(*) ...), 0) 作为 most_popular 但它不起作用,我试过了 COALESCE(SELECT COUNT(*) ...., 0) 最流行

    $stmt = $db->prepare("SELECT *,         
    i.medium_image, i.width, i.height, 
    (SELECT COUNT(*) FROM order_details od WHERE od.product_id = p.product_id) as most_popular

    FROM products p 
        INNER JOIN product_images i on i.product_id = p.product_id      
    WHERE p.department_id=:department_id AND p.is_active=1
    $orderby        
    LIMIT :limit OFFSET :offset");

最佳答案

试试这个,

SELECT  *, 
        i.medium_image, 
        i.width, 
        i.height, 
        COALESCE(s.totalCount, 0) most_popular 
FROM    products p 
        INNER JOIN product_images i 
            ON i.product_id = p.product_id 
        LEFT JOIN
        (
            SELECT  product_id, Count(*) totalCount
            FROM    order_details
            GROUP   BY product_id 
        ) s ON s.product_id = p.product_id
WHERE  p.department_id = :department_id 
       AND p.is_active = 1 
$orderby 
LIMIT :limit OFFSET :offset

或者这个怎​​么样,(你当前的查询)

COALESCE((SELECT COUNT(*) 
          FROM order_details od 
          WHERE od.product_id = p.product_id), 0) as most_popular

关于php - mysql如果计数为空则将其设为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291654/

相关文章:

php - 运行 python 文件并读取输出

c# - 我可以获得我的数据库代码吗?

mysql - 无论如何要从 c# 中的 2 个不同查询返回数据表中的相同数据?

php - 将多个查询的行合并为一个

javascript - 获取输入字段数据以保存在选择选项值中

php - 调用未定义的方法 App\Console\Kernel::load() - Laravel 5.4

mysql - Azure Functions v2 和 MySQL 中的本地配置异常

php - 按发生的时间对时间间隔进行分组

php - 该语句总是返回 false

mysql - 连接速度慢,varchar 列上未使用索引