gpt4 book ai didi

mysql - 从 mysql 引用手册了解 Mysql 查询

转载 作者:行者123 更新时间:2023-11-29 10:17:09 25 4
gpt4 key购买 nike

我正在尝试从他们的引用手册中学习 mysql。这是一个示例表。

MariaDB [menagerio]> select * from shop; 
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
7 rows in set (0.00 sec)

还有这样的查询。

MariaDB [menagerio]> select s1.article s1aritle, s1.dealer s1dealer, 
s1.price s1price, s2.article s2article, s2.dealer s2dealer, s2.price
s2price from shop s1
left join shop s2 on s1.price < s2.price where s2.article is not null;
+----------+----------+---------+-----------+----------+---------+
| s1aritle | s1dealer | s1price | s2article | s2dealer | s2price |
+----------+----------+---------+-----------+----------+---------+
| 0003 | B | 1.45 | 0001 | A | 3.45 |
| 0003 | C | 1.69 | 0001 | A | 3.45 |
| 0003 | D | 1.25 | 0001 | A | 3.45 |
| 0001 | A | 3.45 | 0001 | B | 3.99 |
| 0003 | B | 1.45 | 0001 | B | 3.99 |
| 0003 | C | 1.69 | 0001 | B | 3.99 |
| 0003 | D | 1.25 | 0001 | B | 3.99 |
| 0001 | A | 3.45 | 0002 | A | 10.99 |
| 0001 | B | 3.99 | 0002 | A | 10.99 |
| 0003 | B | 1.45 | 0002 | A | 10.99 |
| 0003 | C | 1.69 | 0002 | A | 10.99 |
| 0003 | D | 1.25 | 0002 | A | 10.99 |
| 0003 | D | 1.25 | 0003 | B | 1.45 |
| 0003 | B | 1.45 | 0003 | C | 1.69 |
| 0003 | D | 1.25 | 0003 | C | 1.69 |
| 0001 | A | 3.45 | 0004 | D | 19.95 |
| 0001 | B | 3.99 | 0004 | D | 19.95 |
| 0002 | A | 10.99 | 0004 | D | 19.95 |
| 0003 | B | 1.45 | 0004 | D | 19.95 |
| 0003 | C | 1.69 | 0004 | D | 19.95 |
| 0003 | D | 1.25 | 0004 | D | 19.95 |
+----------+----------+---------+-----------+----------+---------+

我的问题是,我试图将商店表与其本身连接起来比较它们的价格,但我不明白为什么这个表结果是 21 行,而我在主表中有 7 行,而且这里实际发生了什么。谁能帮我理解这一点吗?

最佳答案

查看最右边的列,它包含价格的所有值。基本上这里发生的是表中价格最低的行将与表中的所有其他行匹配。价格最高的行不会与任何其他行匹配。

所以根据您的查询,您的输出是正确的

如果这不行,那么使用等连接

select s1.article s1aritle, s1.dealer s1dealer, 
s1.price s1price, s2.article s2article, s2.dealer s2dealer, s2.price
s2price
from shop s1
left join shop s2 on s1.article=s2.article
where s1.price < s2.price and s2.article is not null;

关于mysql - 从 mysql 引用手册了解 Mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964105/

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