gpt4 book ai didi

mysql - 编写子查询而不是连接 MySQL

转载 作者:行者123 更新时间:2023-11-29 13:03:33 24 4
gpt4 key购买 nike

这里,a_bkorders 数据库中有 2 个表。

mysql> select *
-> from customers;
+---------+----------------+-----------------+------------+------------------+----------------`enter code here`
| cust_id | cust_name_last | cust_name_first | cust_state | cust_postal_code |
+---------+----------------+-----------------+------------+------------------+----------------

mysql> select *
-> from order_headers;
+----------+------------+---------+
| order_id | order_date | cust_id |
+----------+------------+---------+

我需要显示 cust_id、cust_name 和订单数量(count(order_id) 作为“订单数量”),但使用子查询,而不是联接。

这就是我写的:

SELECT cust_id, cust_name_last,'number of orders'
FROM
(
SELECT cu.cust_id, cu.cust_name_last, count(oh.order_id) as 'number of orders'
FROM a_bkorders.customers cu
JOIN a_bkorders.order_headers oh ON cu.cust_id = oh.cust_id
WHERE cu.cust_state in ('NJ', 'MA')
) A;

我得到:

+---------+----------------+------------------+
| cust_id | cust_name_last | number of orders |
+---------+----------------+------------------+
| 208950 | Adams | number of orders |
+---------+----------------+------------------+

但是如果我单独运行子查询,我只会得到 1 行。 (我知道有很多)

+---------+----------------+------------------+
| cust_id | cust_name_last | number of orders |
+---------+----------------+------------------+
| 208950 | Adams | 70 |
+---------+----------------+------------------+

所以我的问题是为什么子查询单独只输出一行而不是多行。另外,我是否使用子查询正确连接了两个表?为什么在运行整个查询时会得到订单数

感谢您提前提供的帮助,

滴滴

最佳答案

您需要在查询中更正一些内容

  • 在子查询中,为计数变量指定一个明确的别名,而不是“订单数量”,
  • 使用该别名作为要显示的列名称(根据您想要显示的名称命名别名)
  • 最重要的是使用group by子句来获得所需的结果(您正在使用聚合计数)

下面是修改后的查询,

SELECT cust_id, cust_name_last, count as 'number of orders'
FROM
(
SELECT cu.cust_id, cu.cust_name_last, count(oh.order_id) as count
FROM a_bkorders.customers cu
JOIN a_bkorders.order_headers oh ON cu.cust_id = oh.cust_id
WHERE cu.cust_state in ('NJ', 'MA')
GROUP BY oh.cust_id
) A;

希望这有帮助!

关于mysql - 编写子查询而不是连接 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23024750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com