相关疑难解决方法(0)

MySQL错误1093 - 无法在FROM子句中指定更新的目标表

story_category我的数据库中有一个表有损坏的条目.下一个查询返回损坏的条目:

SELECT * 
FROM  story_category 
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category INNER JOIN 
       story_category ON category_id=category.id);
Run Code Online (Sandbox Code Playgroud)

我试图删除它们执行:

DELETE FROM story_category 
WHERE category_id NOT IN (
    SELECT DISTINCT category.id 
    FROM category 
      INNER JOIN story_category ON category_id=category.id);
Run Code Online (Sandbox Code Playgroud)

但我得到了下一个错误:

#1093 - 您无法在FROM子句中为更新指定目标表'story_category'

我怎么能克服这个?

mysql subquery mysql-error-1093 sql-delete

556
推荐指数
10
解决办法
42万
查看次数

使用单个查询选择和删除

我有2张桌子:

  • 用户(user_id,user_connected)
  • rooms(room_id,room_initiating_user_id,room_target_user_id)

我想删除启动用户和target_user都设置为"user_connected = 0"的所有"房间"

我有两个问题:

  1. 如何定位这些用户?显然这个查询不起作用:

    SELECT room_id
    FROM rooms,users
    WHERE
    ( 
     (room_target_user_id=user_id) AND (user_connected=0)
    )                   
    AND
    (                
     (room_initiating_user_id=user_id) AND (user_connected=0)
    )
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我希望,如果可能,使用相同的查询删除这些房间(如果我使用第二个查询没问题,但这意味着将为每个结果触发此查询,这是很多.是不是可以删除这些房间一次?

mysql optimization select sql-delete

4
推荐指数
1
解决办法
2万
查看次数