我有一个包含两个表的数据库,Playlists
和PlaylistItems
。 PlaylistItems将FK返回其播放列表。表格如下:
PlaylistItems: Id (PK) | Title | PlaylistId (FK)
Playlists: Id (PK) | Title
我有几个查询按标题找到PlaylistItems:
Select * from PlaylistItems where Title LIKE '%Geographer - Kites%'
Select * from PlaylistItems where Title LIKE '%Sam Kang%'
这些查询中的每一个都会产生很多结果,但我认为应该只有最少数量的播放列表包含两个结果。也就是说,我正在寻找包含'%Geographer - Kites%'
和'%Sam Kang%'
作为孩子的所有播放列表。
我考虑在每个Select语句上执行JOIN
,然后在PlaylistId上执行COUNT
并返回COUNT > 1
的结果。但是,我认为该解决方案还会显示包含2x '%Geographer - Kites%'
和0x '%Sam Kang%'
的播放列表。
有没有更聪明的方法来实现这个目标?
答案 0 :(得分:1)
肖恩,这会有用吗,还是我们可以在这里工作?
SELECT * FROM Playlists WHERE ID IN(
SELECT PlaylistId FROM PlaylistItems where Title LIKE '%Geographer - Kites%'
INTERSECT
SELECT PlaylistId FROM PlaylistItems where Title LIKE '%Sam Kang%')
答案 1 :(得分:1)
如果您对子查询不过敏,可以尝试类似
的内容select distinct PlaylistId from PlaylistItems where
Title LIKE '%Geographer - Kites%' and
PlaylistId in (select distinct PlaylistId from PlaylistItems where Title LIKE '%Sam Kang%')
我无法访问SQL Server,因此我无法直接验证它。