在另一个表中找到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
表执行内部联接
。。。内部联接只返回两个表中匹配的行