SQL EXISTS查询

时间:2015-10-31 15:17:17

标签: sql exists

我正在尝试编写一个查询,以便从使用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()">&#x25b6;</button>

查询返回正确的结果,但我不认为最后一行是正确的,因为它没有使用至少存在的操作,所以我认为有需要成为子查询中的运算符,或者与NULL值有关。

2 个答案:

答案 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)