SQLite:检测是否存在rowid

时间:2012-03-28 08:01:34

标签: sql sqlite

检测具有给定rowid的行是否存在的最佳/最佳/最快/最合适的方法是什么?

或者通过扩展,hwo检测是否存在与给定条件匹配的至少一行?

我解雇了其中一些请求。我目前正在使用

SELECT 1 FROM table WHERE condition LIMIT 1

对我来说看起来有点奇怪,但看起来像是"最少的工作"但是,对于db,我的SQL知识很不稳定。

5 个答案:

答案 0 :(得分:3)

我可能会这样做:

SELECT
    CASE 
        WHEN EXISTS(SELECT NULL FROM table1 WHERE ID=someid)
        THEN 1
        ELSE 0
    END

Count这些行不是那么有效。

检查某些内容exists在大多数情况下是否更有效

答案 1 :(得分:1)

使用EXISTS,听起来很完美。 e.g。

SELECT *
FROM T1
WHERE EXISTS (SELECT 1 FROM T2 WHERE T2.X = T1.X AND T2.Y = 1)

它与LIMIT 1有效,但通常会更好地进行优化。

答案 2 :(得分:1)

由于它是sqlite,因此您需要使用列名“rowid”来访问该id列。使用Craig Ringer的sql,sqlite版本看起来像这样:

SELECT EXISTS(SELECT 1 FROM table WHERE rowid = insert_number)    

答案 3 :(得分:0)

您可以使用

SELECT COUNT(*) FROM table WHERE ID = whatever

答案 4 :(得分:0)

可以测试

select true from table where id = id1