根据另一个表中的查找值删除表中的行

时间:2013-08-29 12:11:47

标签: mysql

我在数据库中有两个(简化的)表。

Table: queuelist
'songID', 'lastplayed'
'7376', '12/01/2013'
'9322', '16/08/2012'

Table: songlist
'ID', 'artist'
'7376', 'Michael Jackson'
'2345', 'Nirvana'

'songID''ID'是相同的字段。

我已将'Michael Jackson'作为输入,我想基于查找'queuelist'作为公共字段来删除'ID'中的第一行。我是一个MYSQL菜鸟并且一直在尝试示例,但到目前为止还没有完全遵循语法。

到目前为止,我有这个......

DELETE S.songID
FROM queuelist Q,
(
JOIN songlist S
ON Q.songID = S.ID
)
WHERE S.artist = 'Michael Jackson'

1 个答案:

答案 0 :(得分:1)

您应该使用sub-query中的WHERE clause而不是JOIN

DELETE FROM `queuelist`
WHERE       `songID` IN (SELECT `S`.`ID`
                         FROM   `songlist` `S`
                         WHERE  `S`.`artist` = 'Michael Jackson')

这将是结果数据:

Table: queuelist
'songID', 'lastplayed'
'9322', '16/08/2012'

Table: songlist
'ID', 'artist'
'7376', 'Michael Jackson'
'2345', 'Nirvana'