gpt4 book ai didi

mysql - SQL连接和比较

转载 作者:行者123 更新时间:2023-11-29 04:19:10 24 4
gpt4 key购买 nike

我真的不明白这个 SQL 查询在做什么。我的讲师解释说它找到的电影不是最短的。有人可以告诉我这是怎么发生的吗?

我的思路是,有两种电影关系:

  • 电影 - m1
  • 电影 - m2

如何比较相同数据的长度?我不明白这个基本概念。

select distinct m1.mvID, m1.title
from movie m1 join movie m2
on m1.length > m2.length;

最佳答案

您的查询将返回所有电影,最短的除外。

假设你的电影表是这样的:

movie_id | length
---------|-------
AAA | 10
BBB | 20

您正在使用两个不同的别名将您的电影表与其自身连接起来:

FROM movie m1 JOIN movie m2

这是发生了什么:

m1.id | m1.len | m2.id | m2.len | is m1.length > m2.length?
------|--------|-------|--------|--------------------------
AAA | 10 | AAA | 10 | No, don't return row
AAA | 10 | BBB | 20 | No, don't return row
BBB | 20 | AAA | 10 | YES RETURN THIS ROW
BBB | 20 | BBB | 20 | No, don't return row

如果您有超过 2 行,例如长度为 30 的 CCC,则 CCC 行将返回不止一次,因为 30 > 20 而且 30 > 10,这就是您需要使用 SELECT DISTINCT 的原因。

关于mysql - SQL连接和比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705822/

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