mysql - SQL在子查询中检索过滤值

标签 mysql sql count group-by having

在此 cust_id 中是一个外键,ords 返回每个客户的订单数量

SELECT cust_name, (
    SELECT COUNT(*)
    FROM Orders
    WHERE Orders.cust_id = Customers.cust_id
) AS ords
FROM Customers

输出是正确的,但我想过滤它以仅检索订单数量少于给定数量的客户,我不知道如何过滤子查询ords,我尝试了 WHERE ords < 2代码末尾,但它不起作用,我尝试在 cust_id 比较后添加 AND COUNT(*)<2 但它不起作用。我正在使用MySQL

最佳答案

使用 HAVING 子句(并使用联接而不是子查询)......

SELECT Customers.cust_id, Customers.cust_name, COUNT(*) ords
FROM Orders, Customers 
WHERE Orders.cust_id = Customers.cust_id
GROUP BY 1,2
HAVING COUNT(*)<2

如果您想包含零阶的人员,请将连接更改为外部连接。

关于mysql - SQL在子查询中检索过滤值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35904935/

相关文章:

php - 从 MySQL 表中选择数据,其中另一个表中的某些结果取决于条件(如果有)

具有多个条件的 Excel 数组计数频率

PHP PDO 迭代

c# - 不变名称为 'MySql.Data.MySqlClient' 的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册

php - SQLSTATE[42S22] : Column not found: 1054 Unknown column in laravel

php - 表单未提交到数据库

mysql - 如何计算同一列上具有不同 where 子句的值?

javascript - 在 MYSQL 查询中使用 Javascript 变量

mysql - GROUP CONCAT REPLACE sep 字符串

sql - 从多个表中选择计数