找出表中是否存在具有特定值的主键的最佳方法是什么?如何确定某个值是否作为mySql中的主键存在?
我能想到的:
SELECT key FROM table WHERE key = 'value';
和计数结果,或:
SELECT SQL_CALC_FOUND_ROWS key FROM table WHERE key = 'value' LIMIT 1;
SELECT FOUND_ROWS();
找出表中是否存在具有特定值的主键的最佳方法是什么?如何确定某个值是否作为mySql中的主键存在?
我能想到的:
SELECT key FROM table WHERE key = 'value';
和计数结果,或:
SELECT SQL_CALC_FOUND_ROWS key FROM table WHERE key = 'value' LIMIT 1;
SELECT FOUND_ROWS();
我认为,无论是在问题您的建议是合适的。
取决于您如何使用它,您可以通过执行INSERT IGNORE来节省时间,如果主键不存在,您可以插入新行。如果它确实存在,则错误将被忽略,因此您可以继续正常工作。
取决于您的使用情况的其他类似选项包括使用REPLACE或INSERT ON DUPLICATE KEY UPDATE类型的插入。这允许您在主键已存在的情况下更新现有条目,否则它会插入新条目。
做第一次并计算结果(始终为0或1)。方便快捷。
例
Select count(key) into :result from table where key = :theValue
如果您尝试插入或更新之间作出选择,在使用Oracle的MERGE语句。我相信MS-SQL就像一个UPSERT语句。
我认为使用IF EXISTS会更直观,更简单。
IF EXISTS (SELECT key FROM table WHERE key = 'value')
PRINT 'Found it!'
ELSE
PRINT 'Cannot find it!'
我会怎么做:
SELECT 1 FROM table WHERE id key = 'value'
还有什么是可能的优化查询一点干扰,所以我与坚持。
编辑:虽然我刚刚意识到我不认为我曾经在MySQL中这样做过,但我不明白为什么它不起作用。
SELECT 1 FROM mytable WHERE mykey ='value'LIMIT 1
如果存在不是mysql的一部分 – 2009-10-21 08:33:03