Как получить весь соответствующий текст оператора IN в SQL?

Для ясности, вот сценарий: я выполняю запрос, подобный следующему:

SELECT * FROM table_name WHERE uid IN ( 1, 3, 5, 8, 23, 4, 589 ... )

Список uids идет от пользователя.

Есть ли способ получить все соответствующие uidв списке с помощью SQL?

Я ищу синтаксис Oracle SQL, но я также хочу знать синтаксис для общей системы баз данных.

Благодарю.

ОБНОВИТЬ

Я хочу получить все совпадения uids. Например, в таблице нет записи с UID 8 а также 23, на выходе должно быть 1, 3, 5, 4, 589 ...

2 ответа

Есть ли способ получить все соответствующие идентификаторы в списке, используя SQL?

Да, используйте свой запрос, но просто получите uid колонка. Если вы не хотите повторений, используйте DISTINCT ключевое слово:

SELECT DISTINCT uid
FROM   table_name
WHERE  uid IN ( 1, 3, 5, 8, 23, 4, 589 ... )

Если вы хотите это в списке через запятую:

SELECT LISTAGG( uid, ',' ) WITHIN GROUP ( ORDER BY uid ) AS uids
FROM   table_name
WHERE  uid IN ( 1, 3, 5, 8, 23, 4, 589 ... )

Я уверен, что правильно понял ваш вопрос. Если вы хотите узнать, учитывая список значений, какие в таблице, а какие нет, вы можете попробовать это; вам нужно ответить на значения, которые вы ищете во временной таблице (или в выражении select union, или что-то в этом роде), а затем выполнить левое соединение со своей таблицей (TX - вот ваша таблица). Этот сценарий предназначен для MSSQL, чтобы дать вам идею. ЭТО ДОЛЖНО БЫТЬ ЛЕГКО ПРЕОБРАЗОВАТЬ ИХ ДЛЯ ORACLE, ЕСЛИ ЭТО РЕШЕНИЕ - ТО, ЧТО ВЫ ПРОСИТЕ (ЭТО НЕ ЯВЛЯЕТСЯ ОТ ВАШЕГО ВОПРОСА).

CREATE TABLE TX (UID INT)
INSERT INTO TX VALUES (1),(5),(4)

CREATE TABLE TEMP1 (ID_VAL INT)
INSERT INTO TEMP1 SELECT 1 UNION ALL SELECT 3 UNION ALL SELECT 5 UNION ALL SELECT 8 UNION ALL SELECT 23 UNION ALL SELECT 4 UNION ALL SELECT 589 

SELECT * FROM TEMP1

SELECT * 
FROM TEMP1
LEFT JOIN TX ON TEMP1.ID_VAL = TX.UID

Выход:

ID_VAL      UID
----------- -----------
1           1
3           NULL
5           5
8           NULL
23          NULL
4           4
589         NULL
Другие вопросы по тегам