我正在尝试编写一个查询,以便从使用EXISTS查询分配了至少一位艺术家的表格中选择一个相册。
相册和艺术家包含在单独的表格中,并且可以拥有未分配艺术家的专辑,其中值返回为NULL。
有人可以举例说明如何创建此查询。
编辑:添加下面的非工作示例
<audio id="6.1" preload='none'>
<source class="straight" src='audio/6.1.mp3' type='audio/mpeg' />
<source class="swing" src='audio/swing/6.1.mp3' type='audio/mpeg' />
</audio>
<button onclick="document.getElementById('6.1').play()">▶</button>
查询返回正确的结果,但我不认为最后一行是正确的,因为它没有使用至少存在的操作,所以我认为有需要成为子查询中的运算符,或者与NULL值有关。
答案 0 :(得分:1)
如果表格如下:
artist_id, artist_name, album_id
和
album_id, album_name
然后查询将是
select *
from album alb
left join artist art on(alb.album_id = art.album_id)
where art.artist_id is null
使用存在:
select *
from album alb
where not exists
(select * from artist art where art.album_id = alb.album_id)
答案 1 :(得分:0)
您的查询有效,但出于一个神秘的原因:
exists
始终返回true(假设album
至少有一行)。实际上,它有点有效,因为问题是关于专辑而你正在回归艺术家。
不要在外部查询中使用join
。相反,您需要一个相关的子查询:
SELECT al.*
FROM album al
WHERE EXISTS (SELECT 1 FROM artist al WHERE a.artist_id = al.artist_id)