检测具有给定rowid的行是否存在的最佳/最佳/最快/最合适的方法是什么?
或者通过扩展,hwo检测是否存在与给定条件匹配的至少一行?
我解雇了其中一些请求。我目前正在使用
SELECT 1 FROM table WHERE condition LIMIT 1
对我来说看起来有点奇怪,但看起来像是"最少的工作"但是,对于db,我的SQL知识很不稳定。
答案 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