如何在mySql中查找特定值是否存在作为主键?

4

如何确定表中是否已存在某个特定值的主键?

我可以想到以下方法:

SELECT key FROM table WHERE key = 'value';

并计算结果,或者:

SELECT SQL_CALC_FOUND_ROWS key FROM table WHERE key = 'value' LIMIT 1;
SELECT FOUND_ROWS();
6个回答

3

我认为你在问题中提出的建议都是合适的。

根据你的具体情况,你可以考虑使用INSERT IGNORE来节省时间。这种方法允许你插入一个新行,如果主键不存在的话。如果它已经存在,错误将被忽略,因此你可以像平常一样继续操作。

其他类似的选项还包括使用REPLACE或INSERT ON DUPLICATE KEY UPDATE类型的插入。这允许你更新现有条目,如果主键已经存在,否则它只会插入你的新条目。


1

先做第一个并计算结果(始终为0或1)。简单又快速。


1

我会做:

SELECT 1 FROM table WHERE id key = 'value'

其他任何事情可能会稍微干扰查询优化,所以我建议你坚持这样做。

编辑:虽然我刚意识到我从未在MySQL中这样做过,但我看不出为什么它不能使用。


0

从mytable中选择mykey='value'的第一个值


0

例子

Select count(key) into :result from table where key = :theValue

如果您正在考虑使用插入或更新操作,建议在Oracle中使用MERGE语句。我相信MS-SQL有类似于UPSERT语句的东西。

-1

我认为使用IF EXISTS会更直观和简单。


IF EXISTS (SELECT key FROM table WHERE key = 'value')
    PRINT 'Found it!'
ELSE
    PRINT 'Cannot find it!'

如果exists不是mysql的一部分。 - Cyril Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接