Как проверить несколько записей одновременно в SQL, используя предложение where? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть список имен пользователей.Как проверить, существуют ли эти имена пользователей в столбце таблицы SQL?

Например:

Select * from tblPerson where Username in ('Jack', 'Jill', 'Mary');

Я хочу проверить список имен пользователей.Около 1000 имен пользователей.

Вставка 1000 имен пользователей занимает слишком много времени.

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Я думаю, вы ищете условие IN. Это может проверить список имен пользователей сразу.

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...);

Обновление
Если у вас много столбцов, вам нужно добавить индекс к column_name. Это позволяет вашей базе данных искать каждое значение IN с временем O (1). Конечно, это будет зависеть от вашей базы данных. Не все базы данных SQL созданы равными.

Вы также захотите использовать переменные связывания. Это позволяет базе данных оптимизировать производительность. Больше информации здесь: https://stackoverflow.com/a/1013959/11352813

0 голосов
/ 12 апреля 2019

Если у вас есть список имен пользователей, вы можете использовать IN вместо =.Например:

select * form tblPerson where Username in ('Jack', 'Jill', 'Alice', 'Bob')

Если у вас есть список имен пользователей, уже существующих в другой таблице, вы также можете использовать оператор IN, но замените жестко закодированный список имен пользователей подзапросом.

Так, например, если у вас есть другая таблица с именем tblOtherPerson, имена пользователей которой хранятся в столбце с именем OtherUsername, вы можете выполнить:

select * from tblPerson where Username in (select OtherUsername from tblOtherPerson)

Другой способ (часто предпочтительный)JOIN две таблицы вместе:

select
    tblPerson.*
from
    tblPerson
    inner join tblOtherPerson
        on (tblPerson.Username = tblOtherPerson.OtherUsername)
...