2008-10-02 1 views
4

Каков наилучший способ узнать, существует ли первичный ключ с определенным значением в таблице?Как узнать, существует ли определенное значение в качестве первичного ключа в mySql?

я могу думать:

SELECT key FROM table WHERE key = 'value'; 

и подсчет результатов, или:

SELECT SQL_CALC_FOUND_ROWS key FROM table WHERE key = 'value' LIMIT 1; 
SELECT FOUND_ROWS(); 

ответ

3

Я думаю, что любой из ваших предложений в вопросе подходят.

В зависимости от того, как вы используете это, вы можете сэкономить время, выполнив INSERT IGNORE, который позволяет вам вставлять новую строку, если первичный ключ не существует. Если он существует, ошибка игнорируется, поэтому вы можете продолжить как обычно.

Другие аналогичные варианты в зависимости от вашего использования включают использование вставок REPLACE или INSERT ON DUPLICATE KEY UPDATE. Это позволяет обновлять существующую запись, если первичный ключ уже существует, иначе он просто вставляет новую запись.

1

Сделайте первый и подсчитайте результаты (всегда 0 или 1). Легко и быстро.

0

Пример

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

Если вы пытаетесь решить между вставкой или обновлением используйте MERGE заявление в Oracle. Я считаю, что MS-SQL - это что-то вроде утверждения UPSERT.

-1

Я думаю, что было бы более интуитивно понятным и простым в использовании IF EXISTS.


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

если существует не является частью mysql – 2009-10-21 08:33:03

1

Я хотел бы сделать:

SELECT 1 FROM table WHERE id key = 'value' 

Все остальное, скорее всего, мешает оптимизации запросов немного, так что я бы придерживаться этого.

Редактировать: Хотя я только что понял, что я не думаю, что когда-либо делал это в MySQL, хотя я не понимаю, почему это не сработает.

Смежные вопросы