gpt4 book ai didi

mysql - SQL - 选择 A 相等且 B 变体的位置

转载 作者:行者123 更新时间:2023-11-28 23:19:07 24 4
gpt4 key购买 nike

我有这样的 table

mapname     id  time
---------------------
cvjourney 1 65.24
cvjourney 3 69.45
cvjourney 2 64.25
cvjourney 8 75.45
dark_hop 2 65.87
dark_hop 1 61.51
coldrunss 1 12.50

我想从那个表中选择数据来得到这样的东西(对于 id 1、2)

cvjourney   1   65.24
cvjourney 2 64.25
dark_hop 2 65.87
dark_hop 1 61.51

所以我想要选择两个玩家在同一张 map 上都有记录的数据,我不想选择玩家[1]有记录而玩家[2]没有记录的 map ,或者相反。

这是我的选择,但我无法摆脱一个玩家有记录而另一个玩家没有的 map 。

SELECT * 
FROM table
WHERE mapname IN (
SELECT mapname
FROM table
WHERE id IN ('1','2')
)
AND id IN ('1', '2')
ORDER BY mapname

你能帮帮我吗?

最佳答案

您可以使用聚合来仅获取那些同时具有两个 ID 的映射名称(这意味着在应用 id 过滤器后,id 的不同计数将为两个),然后使用它来获取相关行。

select t1.*
from table t1
join (
select mapname
from table
where id in (1, 2)
group by mapname
having count(distinct id) = 2
) t2 on t1.mapname = t2.mapname
where t1.id in (1, 2)
order by t1.mapname

也可以使用IN:

select t1.*
from table t1
where mapname in (
select mapname
from table
where id in (1, 2)
group by mapname
having count(distinct id) = 2
)
and id in (1, 2)
order by mapname

Demo

关于mysql - SQL - 选择 A 相等且 B 变体的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42584406/

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