【问题标题】:DELETE from LIMIT 1 error从 LIMIT 1 中删除错误
【发布时间】:2013-12-30 17:45:03
【问题描述】:

我在 SQLite 中遇到了 LIMIT 1 的问题,我没有 LIMIT 1 的查询可以正常工作,但有时会删除每个重复的元素。我想删除 1 行。

这行得通:

myDataBase.execSQL("DELETE FROM praca
 WHERE pomieszczenie_id="+pomieszczenieid+" 

AND (praca.usluga_id IN (SELECT usluga_id FROM usluga
     WHERE usluga_nazwa='"+childvalue+"'))
AND (sciana_id IN(SELECT sciana_id from sciana 
    WHERE sciana_nazwa='"+rodzic_nazwa+"'))");  

这会返回接近“LIMIT”的语法错误

myDataBase.execSQL("DELETE FROM praca
 WHERE pomieszczenie_id="+pomieszczenieid+" 

AND (praca.usluga_id IN (SELECT usluga_id FROM usluga
     WHERE usluga_nazwa='"+childvalue+"'))
AND (sciana_id IN(SELECT sciana_id from sciana 
    WHERE sciana_nazwa='"+rodzic_nazwa+"')) LIMIT 1");  

我该如何解决?

【问题讨论】:

    标签: android mysql sql sqlite


    【解决方案1】:

    您可能需要启用SQLITE ENABLE UPDATE DELETE LIMIT 或类似这样的解决方法:

     delete from tablename where rowid in (
        select rowid from tablename condition LIMIT 1)
    

    上面的查询只是一个例子,用你的查询和条件替换它。

    【讨论】:

    • 我在这个问题上工作了一段时间,你的语法有效 :) 错过了限制 1,谢谢帮助
    【解决方案2】:

    我认为你应该启用 SQLITE_ENABLE_UPDATE_DELETE_LIMIT http://www.sqlite.org/compile.html#enable_update_delete_limit

    您必须使用 NDK 编译 SQLite,并添加参数以启用 SQLITE_ENABLE_UPDATE_DELETE_LIMIT

    【讨论】:

    • 好像有点复杂。奇怪的是 SQLite 没有内置的 LIMIT 方法。
    【解决方案3】:

    试试这样吧:

    DELETE FROM praca where pomieszczenie_id in
    (
    select pomieszczenie_id from praca
     WHERE pomieszczenie_id="+pomieszczenieid+" 
    
    AND (praca.usluga_id IN (SELECT usluga_id FROM usluga
         WHERE usluga_nazwa='"+childvalue+"'))
    AND (sciana_id IN(SELECT sciana_id from sciana 
        WHERE sciana_nazwa='"+rodzic_nazwa+"')) LIMIT 1
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-13
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 2013-04-01
      • 2023-03-19
      • 2016-12-28
      相关资源
      最近更新 更多