gpt4 book ai didi

SQL:假设只有两个列,如何比较不同行中的数据并仅选择唯一的 "pairs"?

转载 作者:行者123 更新时间:2023-12-04 05:11:34 25 4
gpt4 key购买 nike

我有几个表( 粗体 表示主键):

Dancer(dancer_name, gender, age)

Dance(dancer_name, dvd_id, song_title)

Dvd(dvd_id, song_title, cost)

Song(dancer_name, song_title, genre)

Launch(dancer_name, dvd_id, year)


我想选择歌曲一起出现在一张或多张 DVD 中的舞者对,并且每对舞者只打印一次。
这是我所能得到的最接近的结果,它两次打印出相同的对,但它们的名称在不同的列中:
select distinct DANCER1.dancer_name, DANCER2.dancer_name, count(*) as count
from Dancer DANCER1, Dancer DANCER2, Dance DANCE1, Dance DANCE2
where DANCER1.dancer_name = DANCE1.dancer_name
and DANCER2.dancer_name = DANCE2.dancer_name
and DANCER1.dancer_name <> DANCER2.dancer_name
and DANCE1.dvd_id = DANCE2.dvd_id
group by DANCER1.dancer_name, DANCER2.dancer_name;
所以,而不是得到
Tom Jon
Jon Tom
Bob Sam
Sam Bob
我只想
Tom Jon
Bob Sam

最佳答案

如果您将测试从 DANCER1.dancer_name <> DANCER2.dancer_name 更改为至 DANCER1.dancer_name < DANCER2.dancer_name ,你应该得到你想要的结果。

但是,由于您在 Dance 表中使用名称作为键,因此不需要加入 Dancer 表,查询可能会简化为:

SELECT DANCE1.dancer_name, DANCE2.dancer_name, count(*) as count
FROM Dance DANCE1
INNER JOIN Dance DANCE2
ON DANCE1.dvd_id = DANCE2.dvd_id
WHERE DANCE1.dancer_name < DANCE2.dancer_name
GROUP by DANCE1.dancer_name, DANCE2.dancer_name

关于SQL:假设只有两个列,如何比较不同行中的数据并仅选择唯一的 "pairs"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870268/

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