Mysql 如何删除/更新带有WHERE和子查询的多个入口?
如何删除/更新带有WHERE和子查询的多个入口Mysql 如何删除/更新带有WHERE和子查询的多个入口?,mysql,sql,database,Mysql,Sql,Database,如何删除/更新带有WHERE和子查询的多个入口 DELETE FROM photos WHERE user_id = (SELECT id FROM users WHERE city = "Berlin") 如果子查询的结果只有一个id,则它可以工作,但对于多个id则不能工作。多个ID的行为应该像它们是1、2、3或 在这种情况下,我得到的错误是: SQLSTATE[21000]:基数冲突:1242子查询返回更多 超过1行SQL:从照片中删除,其中photos.user_id
DELETE FROM photos
WHERE user_id = (SELECT id FROM users WHERE city = "Berlin")
如果子查询的结果只有一个id,则它可以工作,但对于多个id则不能工作。多个ID的行为应该像它们是1、2、3或
在这种情况下,我得到的错误是:
SQLSTATE[21000]:基数冲突:1242子查询返回更多
超过1行SQL:从照片中删除,其中photos.user_id=选择id
来自city=Berlin的用户
这几乎不取决于数字 如果用户数量巨大,则需要将id作为表加入
DELETE FROM photos
WHERE user_id IN (SELECT id FROM users WHERE city = "Berlin")
那就好像
DELETE photos
FROM photos
INNER JOIN (SELECT id FROM users WHERE city = "Berlin") u1 ON u1.id = photos.user_id
你可以在任何地方使用
从照片中删除
WHERE user_id IN SELECT id FROM users WHERE city=Berlin
您可以使用以下选项:
DELETE FROM photos WHERE user_id=ANY(SELECT id FROM users WHERE city = "Berlin")
这将是标准的解决方案。