gpt4 book ai didi

sql - 查询返回的行太少

转载 作者:太空宇宙 更新时间:2023-11-03 11:20:16 25 4
gpt4 key购买 nike

设置:

mysql> create table product_stock(
product_id integer, qty integer);
Query OK, 0 rows affected (0.17 sec)

mysql> create table product(
product_id integer, product_name varchar(255));
Query OK, 0 rows affected (0.11 sec)

mysql> insert into product(product_id, product_name)
values(1, 'Apsana White DX Pencil');
Query OK, 1 row affected (0.05 sec)

mysql> insert into product(product_id, product_name)
values(2, 'Diamond Glass Marking Pencil');
Query OK, 1 row affected (0.03 sec)

mysql> insert into product(product_id, product_name)
values(3, 'Apsana Black Pencil');
Query OK, 1 row affected (0.03 sec)

mysql> insert into product_stock(product_id, qty)
values(1, 100);
Query OK, 1 row affected (0.03 sec)

我的第一个查询:

mysql> SELECT IFNULL(SUM(s.qty),0) AS stock, 
product_name
FROM product_stock s
INNER JOIN product p ON p.product_id=s.product_id
GROUP BY product_name
ORDER BY product_name;

返回:

+-------+---------------------------+ 
| stock | product_name |
+-------+---------------------------+
| 100 | Apsana White DX Pencil |
+-------+---------------------------+
1 row in set (0.00 sec)

但我想得到以下结果:

+-------+------------------------------+ 
| stock | product_name |
+-------+------------------------------+
| 0 | Apsana Black Pencil |
| 100 | Apsana White DX Pencil |
| 0 | Diamond Glass Marking Pencil |
+-------+------------------------------+

要获得此结果,我应该运行什么 mysql 查询?

最佳答案

INNER 连接只会返回在两个表中都匹配的行。这就是为什么股票表中没有行的结果不返回结果的原因。

LEFT 联接将返回第一个表中的所有行,RIGHT 联接将返回第二个表中的所有行。

在您的查询中,您期望来自第二个表的所有结果,因此将您的 INNER 联接更改为 RIGHT 联接。

这里有一个教程,有一些例子:

http://www.wellho.net/mouth/158_MySQL-LEFT-JOIN-and-RIGHT-JOIN-INNER-JOIN-and-OUTER-JOIN.html

关于sql - 查询返回的行太少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530021/

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