Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在另一个表中找到MySQL delete left join_Mysql_Sql - Fatal编程技术网

在另一个表中找到MySQL delete left join

在另一个表中找到MySQL delete left join,mysql,sql,Mysql,Sql,我正在尝试删除在另一个表中找到的行,如下所示 DELETE l, lk, lp, sl FROM listings l LEFT JOIN listings_keywords lk ON lk.listing_sid = l.sid LEFT JOIN listings_properties lp ON lp.object_sid = l.sid LEFT JOIN source_listings sl ON sl.listing_id = l.sid WHERE l.user_sid = 46

我正在尝试删除在另一个表中找到的行,如下所示

DELETE l, lk, lp, sl
FROM listings l
LEFT JOIN listings_keywords lk
ON lk.listing_sid = l.sid
LEFT JOIN listings_properties lp
ON lp.object_sid = l.sid
LEFT JOIN source_listings sl
ON sl.listing_id = l.sid
WHERE l.user_sid = 4645
AND l.sid IN (SELECT listing_id FROM source_listings)
这似乎造成了一个错误

Error: SQLSTATE[HY000]: General error: 1093 You can't specify target table 'sl' for update in FROM clause
我正在尝试删除在
源代码清单
下找到的任何特定用户_sid=4645的内容

是否有办法解决此问题,以便从SQL中指定的四个表中删除具有这些条件的所有行?

删除此选项

AND l.sid IN (SELECT listing_id FROM source_listings)
在MySQL中,您不能修改SELECT部件中使用的同一个表。 由于要从表
源代码列表中删除行,所以不能在select语句中使用它

除了错误之外,子查询不是必需的,因为您已经在
列表
表和
源代码列表

您不能在子查询中更新表-
源代码列表
。如果无法摆脱该语句,则需要强制引用的表作为MySQL生成的临时表存在:

DELETE l, lk, lp, sl
FROM listings l
LEFT JOIN listings_keywords lk
ON lk.listing_sid = l.sid
LEFT JOIN listings_properties lp
ON lp.object_sid = l.sid
LEFT JOIN source_listings sl
ON sl.listing_id = l.sid
WHERE l.user_sid = 4645
AND l.sid IN
SELECT listing_id FROM (SELECT listing_id FROM source_listings) X

如果我只想包含与此表中找到的表相关的那些表,我是否需要为
sl
表执行
内部联接
。。。内部联接只返回两个表中匹配的行