【问题标题】:Delete query with inner join使用内部联接删除查询
【发布时间】:2016-01-16 15:50:13
【问题描述】:

查询

DELETE `contact`
FROM `contact` ct
INNER JOIN `contact_user` cu ON cu.contact_id=ct.id
WHERE ct.id=4 && ct.block_id=5671 && cu.user_id=1

错误

致命:SQLSTATE[42S02]:未找到基表或视图:1109 未知 MULTI DELETE 中的表“联系人”; SQL:删除contact FROM contact ct INNER JOIN contact_user cu ON cu.contact_id=ct.id WHERE ct.id=4 && ct.block_id=5671 && cu.user_id=1

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    由于您已经为表 contact 定义了 Alias name,因此您需要使用别名而不是原始表名。试试这个

    DELETE ct 
    FROM   contact ct 
           INNER JOIN contact_user cu 
                   ON cu.contact_id = ct.id 
    WHERE  ct.id = 4 
           AND ct.block_id = 5671 
           AND cu.user_id = 1 
    

    或删除contact 表的别名

    DELETE contact 
    FROM   contact 
           INNER JOIN contact_user cu 
                   ON cu.contact_id = contact.id 
    WHERE  contact.id = 4 
           AND contact.block_id = 5671 
           AND cu.user_id = 1 
    

    【讨论】:

      【解决方案2】:

      因为您已经为表定义了别名,所以您应该使用它。还将&& 替换为and。

      DELETE `ct` --`contact`
      FROM `contact` ct
      INNER JOIN `contact_user` cu ON cu.contact_id=ct.id
      WHERE ct.id=4 and ct.block_id=5671 and cu.user_id=1
      

      【讨论】:

        猜你喜欢
        • 2014-06-10
        • 2021-09-09
        • 2017-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        • 2014-08-13
        相关资源
        最近更新 更多