Нужна помощь по поводу MySQL IN - PullRequest
0 голосов
/ 08 сентября 2011

У меня есть таблица с именем collection , в которой есть поля pk_collectionid и name .

Я создаю строку, содержащую идентификаторы коллекцииразделенных запятыми.Формат: 1,1

Я хочу получить имя всех идентификаторов, упомянутых в строке, из таблицы коллекций.

Я использовал IN clause under mysql.

Мойзапрос:

SELECT name
FROM `collections`
WHERE `pk_collectionid`
IN ( 1, 1 )

Сейчас он генерирует одну строку, поскольку идентификатор является общим, но я хочу, чтобы он показывал две строки вместо одной, даже если идентификаторы одинаковы.

Ответы [ 2 ]

3 голосов
/ 08 сентября 2011

Это очень странное требование. Единственное решение, о котором я могу подумать, это использовать запрос UNION ALL:

SELECT name FROM `collections` WHERE `pk_collectionid` = 1
UNION ALL
SELECT name FROM `collections` WHERE `pk_collectionid` = 1
-- UNION ALL
-- SELECT name FROM `collections` WHERE `pk_collectionid` = 2
-- UNION ALL
-- SELECT name FROM `collections` WHERE `pk_collectionid` = 3
-- ...
2 голосов
/ 08 сентября 2011

Вы не должны пытаться получить повторяющиеся строки обратно из запроса - это не нужно, это расточительно, и это будет трудно реализовать.

Вместо этого создайте карту id на всю строку из вашего набора результатов.Затем вы можете перебрать коллекцию, включающую дубликаты идентификаторов (тот, который вы использовали для создания запроса в первую очередь), и использовать каждый идентификатор для индексации в созданной вами карте.Таким образом, вы сможете обрабатывать каждую запись по отдельности столько раз, сколько вам необходимо.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...