【问题标题】:Can I do a COUNT with a MySQL Join?我可以用 MySQL Join 做一个 COUNT 吗?
【发布时间】:2012-10-19 23:42:13
【问题描述】:

这是我的数据

newCatCols
=====
id      sku     name
---------------
1           4001    Black
2           4031    Red
3           4021    Black
4           4041    Blush

products
=====
id      sku     Price
---------------
1           4001    123
2           4031    232
3           4021    453
4           4041    233

这是我的查询

SELECT COUNT( * ) AS numTotal
FROM `products`
INNER JOIN `colors` ON `products`.`sku` = `colors`.`sku`
WHERE (
`name` = 'Apple_Black'
OR `name` = 'Black'
OR `name` = 'Black_Aubergine'
OR `name` = 'Black_Blush'
OR `name` = 'Black_Slate'
OR `name` = 'Black_Turquoise'
OR `name` = 'Red_Black'
OR `name` = 'Sapphire_Black'
OR `name` = 'Multi Apple'
)
AND `status` = '1'
AND `category` = 'sig'
GROUP BY `products`.`sku`
ORDER BY `products`.`rank` ASC

理想情况下,如果我只是更改此行将是完美的SELECT COUNT( * ) AS numTotal 以某种方式仅修改它以使其工作?数据当前返回行值为 1 的产品列表,因此它只是循环而不计算所有行的总值。

应该只显示返回的总数,例如应该显示 4

Output
 =====
 numTotal
 ---------------
 4

【问题讨论】:

  • 你到底想要什么?你能发布你想要的结果吗?
  • 已更新,它应该只返回查询中的总值。目前它只是循环所有项目
  • 因为有 4 条记录,所以不要循环这 4 条,它应该只是吐出数字 4

标签: mysql join count inner-join


【解决方案1】:

这将返回符合您条件的不同产品 SKU 的数量:

SELECT COUNT(distinct `products`.`sku`) AS numTotal
FROM `products`
INNER JOIN `colors` ON `products`.`sku` = `colors`.`sku`
WHERE `name` in ('Apple_Black'
        ,'Black'
        ,'Black_Aubergine'
        ,'Black_Blush'
        ,'Black_Slate'
        ,'Black_Turquoise'
        ,'Red_Black'
        ,'Sapphire_Black'
        ,'Multi Apple'
    )
    AND `status` = '1'
    AND `category` = 'sig'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2012-06-18
    • 2012-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多