复杂DELETE SQL查询

问题描述 投票:0回答:1

我需要创建一个SQL QUERY,它将删除album表中的记录,但前提是签名的客户端满足以下要求:

// Variables as a demonstration
const signedClientId = 1;
const albumIdToDelete = 2;

要求

  1. 客户在clients_albums表中有一个关联的相册
  2. - - 要么 - -
  3. 相册存在于domains_albums表中,而客户端是域的所有者

我有5张桌子:

  1. 专辑 - id |名称
  2. 客户 - id | first_name |姓
  3. 域名 - id |所有者(fk - >客户)|名称
  4. clients_albums - client(fk - > clients)|专辑(fk - >专辑)
  5. domains_albums - 域名(fk - >域名)|专辑(fk - >专辑)
mysql sql
1个回答
3
投票

我认为这应该可以解决问题:

DELETE 
FROM albums
WHERE album_id IN 
(SELECT album_id 
 FROM clients_albums
 WHERE client_id = @CLIENTID)
OR
WHERE album_id IN
(SELECT album_id
 FROM domain_albums JOIN domains ON domain_albums.album = albums.id
 WHERE domains.owner = @CLIENTID)

@CLIENTID是一个占位符,您可以在任何查询系统中传递客户端ID。

© www.soinside.com 2019 - 2024. All rights reserved.