SQLite检查是否存在行

时间:2012-11-21 07:51:09

标签: ruby sqlite

我正在尝试检查我的sqlite数据库中名为“Products”的表中是否存在特定ID。

def existsCheck( db, id )
    temp = db.execute( "select exists(
        select 1
        from Products
        where promoID = ?
    ) ", [id] )
end

这是我当前的代码但返回一个数组,这意味着我必须先处理转换才能将其用作布尔值。任何想法如何我可以改变它,以便它返回一个值为1的int?

2 个答案:

答案 0 :(得分:2)

无需使用子查询:

def existsCheck( db, id )
    db.execute( "select 1
                 from Products
                 where promoID = ?",
                [id] ).length > 0
end

返回布尔结果。

答案 1 :(得分:0)

将其更改为:

def existsCheck( db, id )
    temp = db.execute( "select 1 where exists(
        select 1
        from Products
        where promoID = ?
    ) ", [id] ).any?
end

SQL条件在满足条件时返回1,如果不满足则返回空结果集。整个函数根据结果集返回布尔值。