我在mysql数据库中有3个表:PLAYERS
,SPORTS
和INTERESTS
PLAYERS
表包含ID和播放器名称(id,player_name)
数据示例:
(1,David)
(2,Jack)
(3,Ron)
(4,Smith)
SPORTS
表包含ID和体育名称(id,sports_name)
数据示例:
(1,Soccer)
(2,Tennis)
(3,Swimming)
每个玩家可能对多项运动感兴趣,因此INTERESTS
表具有玩家ID和运动ID。 (player_id,sports_id)
数据示例:
(1,2)
(1,3)
(2,3)
我想显示那些踢足球和网球的球员的名字 不是足球或网球,而是足球和网球。
任何人都可以帮助我?
答案 0 :(得分:2)
Select P.id, P.player_name
From Players As P
Join Interests As I
On I.player_id = P.id
Join Sports As S
On S.id = I.sports_id
Where S.sports_name In('Tennis','Soccer')
Group By P.id, P.player_name
Having Count( Distinct S.sports_name ) = 2
答案 1 :(得分:0)
未经测试,但我认为这样的事情可能有效:
SELECT
player_name
FROM
players
WHERE
EXISTS (SELECT id FROM interests i WHERE i.player_id = players.id AND i.sports_id = 1)
AND EXISTS (SELECT id FROM interests i WHERE i.player_id = players.id AND i.sports_id = 2)