Mysql 基于另一个表中的查找值删除表中的行

Mysql 基于另一个表中的查找值删除表中的行,mysql,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'作为输入,我想在查找'ID'作为公共字段的基础上删除'queue

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

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'
作为输入,我想在查找
'ID'
作为公共字段的基础上删除
'queuelist'
中的第一行。我是一个MYSQL noob,一直在尝试示例,但到目前为止,我还没有完全遵循语法

到目前为止我有这个

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

您应该在
WHERE子句中使用
子查询
,而不是使用
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'

谢谢你的回复。我在第一个问题上遇到了缩进错误(语法错误,引用了意外的标识,预期输入或“;”),有什么想法吗?@square\u eyes编辑。Try now语法错误已消失,但现在我得到错误代码:1054。“字段列表”中的未知列“S.songID”我想我找到了问题。应该是吗
DELETE FROM
queuelist`WHERE
songID
=(从
songlist
S
WHERE
S
Artister
=“Michael Jackson”)中选择
S
ID。`这会产生新的错误
错误代码:1175。您正在使用安全更新模式,并且您试图更新一个不带WHERE的表,该表使用键列禁用安全模式,请在“首选项”->“SQL查询”中切换该选项,然后重新连接。