У меня есть список идентификаторов и нужно проверить, находится ли пользователь с идентификатором в DB или нет в одном SELECT. Как SELECT WHERE IN(). Но SELECT WHERE IN() не соответствует моим потребностям, мне нужно, чтобы в одном SELECT различались те идентификаторы, которые находятся в таблице, а те, которые нет, но не используют какие-либо петли, например, несколько SELECT. Любые идеи приветствуются!Quick SELECT WHERE IN like with flag
ответ
Я не уверен, что это то, что вам нужно, но я думаю, у вас есть таблица 1, которая содержит много идентификаторов, и вы хотели бы видеть, какие из них встречаются в таблице 2, а какие нет?
select T1.ID, count(*) 'Times of occurrences in T2'
from table 1 T1
left outer join table 2 T2
ON T1.ID = T2.ID
group by T1.ID
У меня нет таблицы 1, данные просто появляются как список идентификаторов. – Andrew
Необходимо предоставить более подробную информацию. Будет ли это один запрос, чтобы список мог быть жестко запрограммирован в запросе или вы хотите найти общее решение для любого списка идентификаторов? Как долго ваш список?
Для одного запроса и не очень длинного списка вы можете использовать union. На примере:
SELECT some_value, EXISTS(SELECT 1 FROM tableName WHERE user_id = some_value)
UNION ALL
SELECT other_value, EXISTS(SELECT 1 FROM tableName WHERE user_id = other_value)
UNION ALL
SELECT other_value2, EXISTS(SELECT 1 FROM tableName WHERE user_id = other_value2)
UNION ALL
.....
Если список идентификаторов могут изменяться и/или состоит из тысяч записей невозможно. В списке у вас есть столбчатый макет, и вы хотите изменить его на результаты на уровне строк. В MsSQL есть предложения PIVOT, UNPIVOT, которые могут это сделать. В MySQL такое преобразование без явных объединений невозможно.
- 1. sql SELECT IN with like
- 2. SELECT ... WHERE Значение LIKE '% ...%'
- 3. UPDATE with WHERE in sub select
- 4. Mysql WHERE LIKE with RadCombobox.Text
- 5. PostgreSQL WHERE IN LIKE query
- 6. Hibernate select query with different where where
- 7. select * like with masked compare
- 8. SELECT в WHERE LIKE раздел
- 9. MySQL select where like path
- 10. Использование sql with in where where
- 11. SQL Оператор Select LIKE IN
- 12. sql where where in select statement issue
- 13. SELECT statement in a LIKE
- 14. Static select in where
- 15. WHERE in SELECT
- 16. case case with wildcard in where where
- 17. AsEnumerable with Where in it
- 18. Sqoop Import "--where" flag
- 19. SQL INNER JOIN with LIKE и WHERE
- 20. SQL Union with coalesce (?) In where clause
- 21. SELECT with WHERE using PreparedStatement
- 22. Where where with Join in lambda expression
- 23. Concat select query with like% string%
- 24. SQL Select with Like String Contains ''
- 25. n1ql multiple unsest in select statement with multiple where condition
- 26. SQL Where Clause с LIKE и IN
- 27. select concat with in-Tag
- 28. SELECT CASE with LIKE statement sql
- 29. SELECT all_data WHERE value_in_column LIKE specific_string
- 30. sql server select concatenate with like?
Можете ли вы показать его каким-то примером –
С помощью всего одного оператора SELECT я не вижу способа сделать это в MySQL. Я бы предложил создать временную таблицу (которая будет выброшена после закрытия вашего соединения), ВСТАВИТЬ идентификаторы, которые у вас есть, а затем LEFT JOIN вашей существующей таблицы пользователей. – CBroe
Вы пишете Cbroe. Это решение! Большое спасибо! – Andrew