mysql - regexp из списка подзапросов значений [duplicate]

zip является его собственным обратным! Если вы используете специальный оператор *.

>>> zip(*[('a', 1), ('b', 2), ('c', 3), ('d', 4)])
[('a', 'b', 'c', 'd'), (1, 2, 3, 4)]

Как это работает, вызывая zip с аргументами:

zip(('a', 1), ('b', 2), ('c', 3), ('d', 4))

... за исключением того, что аргументы передаются в zip напрямую (после преобразования в кортеж), поэтому нет необходимости беспокоиться о том, что количество аргументов слишком велико.

33
задан mrbinky3000 14 October 2010 в 21:08
поделиться

1 ответ

, используя функцию GROUP_CONCAT () и вызов GROUP BY. вот пример запроса

SELECT 
   p.package_id,
   p.package_name,
   p.price,
   GROUP_CONCAT(pz.zone_id SEPARATOR ',') as zone_list 
FROM 
   package p 
LEFT JOIN package_zone pz ON p.package_id = pz.package_id 
GROUP BY 
   p.package_id

, который вы все равно можете заказать по zone_id s (или zone_list), и вместо использования LIKE вы можете использовать WHERE zp.zone_id = 'Z1' или что-то подобное.

54
ответ дан Aran Mulholland 20 August 2018 в 15:22
поделиться
  • 1
    Так близко. Почти готово! Я бы хотел, чтобы zone_list сортировался по алфавиту. Вот почему я больше думал о строках подзапроса. Очень близко. – mrbinky3000 14 October 2010 в 19:59
  • 2
    Выяснилось, что я мог бы поставить & quot; ORDER BY & quot; в GROUP CONCAT. поэтому GROUP_CONCAT (pz.zone_id ORDER BY pz.zone_id ASC SEPARATOR ',') работал !!!! – mrbinky3000 14 October 2010 в 20:06
  • 3
    Редакция: не работает. Он всегда возвращает все возможные зоны для каждой строки. Каждая строка должна возвращать только зоны для этого конкретного пакета. – mrbinky3000 14 October 2010 в 20:21
  • 4
    Я понял, как предотвратить возвращение всех возможных строк. Вам нужно было сделать крест. Я отвечу в очереди, чтобы все могли видеть. – mrbinky3000 14 October 2010 в 21:01
  • 5
    Для любого, кто хочет это сделать в SQL Server: stackoverflow.com/questions/6899/… – Mahmoodvcs 17 October 2012 в 17:22
Другие вопросы по тегам:

Похожие вопросы: