Это не могло бы быть очень разумно, но I'ld нравится позволять MySQL возвратить меня точные дублирующиеся строки, если существуют дублирующиеся критерии в WHERE IN
пункт. Действительно ли это возможно?
Возьмите этот пример:
SELECT
columns
FROM
table
WHERE
id IN( 1, 2, 3, 4, 5, 1, 2, 5, 5)
I'ld как MySQL для возврата меня строки с идентификатором 5 три раза, идентификатор 1 и 2 дважды, и 3 и 4 однажды.
Как длина IN
аргументы, а также дублирующееся количество (однажды, дважды, три раза, и т.д.), будет произвольно, я не хочу полагаться UNION
или JOIN
. Действительно ли что-то вроде этого возможно иначе?
Я не совсем понимаю, почему вы хотите запретить JOIN, ведь он довольно важен для SQL. Это все равно что запретить вызовы функций в функциональном языке.
Хороший способ решить эту проблему - создать набор результатов, содержащий идентификаторы, которые вы хотите вернуть, и соединить их с ним. Вот один из способов сделать это:
SELECT Table1.*
FROM Table1
JOIN (SELECT 1 AS id
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 5
UNION ALL SELECT 5) AS T1
ON Table1.id = T1.id
Я не уверен, рассматривали ли вы этот метод? У него нет ни одной из проблем, которых вы, похоже, боитесь.
Если вы запретите джоины, вы не сможете сделать это, если только не используете хранимую процедуру, что, я бы сказал, еще хуже, чем джоин.