检测是否存在具有给定rowid的行是最佳/最正确/最快/最恰当的方法?SQLite:检测rowid是否存在
或者通过扩展,hwo检测是否至少有一行符合给定条件?
我解雇了一些这些请求。我目前使用
SELECT 1 FROM table WHERE condition LIMIT 1
看起来有点怪我,但在我看来像“最少的工作”为分贝,但是,我的SQL知识参差不齐。
检测是否存在具有给定rowid的行是最佳/最正确/最快/最恰当的方法?SQLite:检测rowid是否存在
或者通过扩展,hwo检测是否至少有一行符合给定条件?
我解雇了一些这些请求。我目前使用
SELECT 1 FROM table WHERE condition LIMIT 1
看起来有点怪我,但在我看来像“最少的工作”为分贝,但是,我的SQL知识参差不齐。
比如,你可以使用
SELECT COUNT(*) FROM table WHERE ID = whatever
我可能会做这样的事:
SELECT
CASE
WHEN EXISTS(SELECT NULL FROM table1 WHERE ID=someid)
THEN 1
ELSE 0
END
要Count
行是不是有效。
要检查,如果事情exists
在大多数情况下更有效
我不一定需要一个0/1,一个SELECT where sqlite3_step()返回DONE或ROW就足够了。 - – peterchen 2012-03-28 13:46:15
一个可以测试
select true from table where id = id1
由于它的源码,你需要使用列名“ROWID”访问ID列。使用克雷格林格SQL,SQLite的版本是这样的:
SELECT EXISTS(SELECT 1 FROM table WHERE rowid = insert_number)
你有更好'SELECT 1 FROM表WHERE ID = whatever'或者,如果SQLite支持它,'SELECT EXISTS(SELECT 1 FROM表WHERE id = whatever)'为布尔结果。 – 2012-07-22 13:05:41