【问题标题】:where in clause in nested query嵌套查询中的 where in 子句
【发布时间】:2014-03-25 17:59:46
【问题描述】:

我正在使用 mysql 和 php。即使存在满足查询中指定条件的记录,我也无法删除任何记录,请帮助识别问题, 我的查询是

Table1 (id, LName) table2(id,LName)

delete from table1 where Lname in (select Lname from table2); 

【问题讨论】:

  • 这不是在 SO 中提问的好方式。请展示您的表格结构以及到目前为止您所做的工作。
  • 我有两个表 table1(id, name) 和 table2(id, name),如果 table2 中存在相同的名称,我想从 table1 中删除记录。
  • 请在您的评论中添加表格描述和其他详细信息。
  • Lname 是错字吗?您的表格似乎有一个名为 name 的列
  • 显示数据示例

标签: mysql sql nested where clause


【解决方案1】:

delete from table1 where Lname in (select Lname from table2);

它对我有用。也许它有案例问题,所以试试这样

delete from table1 where upper(Lname) in (select upper(Lname) from table2);

【讨论】:

    【解决方案2】:

    根据您在评论中提供的表结构,查询应该是这样的:

    delete from table1
    where name in 
    (select name 
     from table2)
    

    但根据您的问题,您的表格似乎没有名为“Lname”的列。

    如果你的列名实际上是'Lname',那么查询可以重写为:

    delete from table1
    where Lname in 
    (select Lname 
     from table2)
    

    请在提及表格结构时格外小心,您必须发布表格和列的适当名称,并且拼写正确。

    【讨论】:

      【解决方案3】:

      另一个选项是使用 JOIN:-

      DELETE table1
      FROM table1 
      INNER JOIN table2
      ON table1.Lname table2.Lname
      

      但你原来的 SQL 应该可以工作

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-18
        • 1970-01-01
        • 2014-09-10
        • 1970-01-01
        • 2022-12-01
        • 2020-10-13
        • 1970-01-01
        相关资源
        最近更新 更多