MySQL « Как объединить значения нескольких ячеек?

Есть вот такой запрос:

/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .mysql.geshi_code {font-family:monospace;} .mysql.geshi_code .imp {font-weight: bold; color: red;} .mysql.geshi_code .kw1 {color: #990099; font-weight: bold;} .mysql.geshi_code .kw2 {color: #990099; font-weight: bold;} .mysql.geshi_code .kw3 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw4 {color: #999900; font-weight: bold;} .mysql.geshi_code .kw5 {color: #999900; font-weight: bold;} .mysql.geshi_code .kw6 {color: #FF9900; font-weight: bold;} .mysql.geshi_code .kw7 {color: #FF9900; font-weight: bold;} .mysql.geshi_code .kw8 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw9 {color: #9900FF; font-weight: bold;} .mysql.geshi_code .kw10 {color: #CC0099; font-weight: bold;} .mysql.geshi_code .kw11 {color: #CC0099; font-weight: bold;} .mysql.geshi_code .kw12 {color: #009900;} .mysql.geshi_code .kw13 {color: #000099;} .mysql.geshi_code .kw14 {color: #000099;} .mysql.geshi_code .kw15 {color: #000099;} .mysql.geshi_code .kw16 {color: #000099;} .mysql.geshi_code .kw17 {color: #000099;} .mysql.geshi_code .kw18 {color: #000099;} .mysql.geshi_code .kw19 {color: #000099;} .mysql.geshi_code .kw20 {color: #000099;} .mysql.geshi_code .kw21 {color: #000099;} .mysql.geshi_code .kw22 {color: #000099;} .mysql.geshi_code .kw23 {color: #000099;} .mysql.geshi_code .kw24 {color: #000099;} .mysql.geshi_code .kw25 {color: #000099;} .mysql.geshi_code .kw26 {color: #000099;} .mysql.geshi_code .kw27 {color: #00CC00;} .mysql.geshi_code .coMULTI {color: #808000; font-style: italic;} .mysql.geshi_code .co1 {color: #808080; font-style: italic;} .mysql.geshi_code .co2 {color: #808080; font-style: italic;} .mysql.geshi_code .es0 {color: #004000; font-weight: bold;} .mysql.geshi_code .es1 {color: #008080; font-weight: bold;} .mysql.geshi_code .br0 {color: #FF00FF;} .mysql.geshi_code .sy1 {color: #CC0099;} .mysql.geshi_code .sy2 {color: #000033;} .mysql.geshi_code .st0 {color: #008000;} .mysql.geshi_code .nu0 {color: #008080;} .mysql.geshi_code span.xtra { display:block; }

SELECT GROUP_CONCAT(id) FROM `jos_apoll_votes` GROUP BY ip, option_id HAVING COUNT(*) >= 3;
 


Он дает следующий результат (каждая строка - новая ячейка, в каждой ячейке несколько значений через запятую):


3320,3321,3358
499,501,502,8381
2576,2584,2599,6279
1383,2557,2572,2573
 


Необходимо объединить полученный результат в одну большую строку. Вот такую:


3320,3321,3358,499,501,502,8381,2576,2584,2599,6279,1383,2557,2572,2573
 


Я пробовал использовать CONCAT_WS, но он не работает:


SELECT CONCAT_WS (",",SELECT GROUP_CONCAT(id)
FROM `jos_apoll_votes` GROUP BY ip, option_id
HAVING COUNT(*) >= 3;);
 


Вероятно, он не работает с ячейками, как c аргументами. Что я делаю не так, либо как можно решить эту задачу?

1 ответов


Просто убрать `GROUP BY`


SELECT GROUP_CONCAT(id) FROM `jos_apoll_votes` HAVING COUNT(*) >= 3;
 
Можно еще так :)

   SELECT GROUP_CONCAT(ids SEPARATOR ',')
   FROM (SELECT GROUP_CONCAT(id) as ids FROM `jos_apoll_votes` GROUP BY ip, option_id HAVING COUNT(*) >= 3)t
 

Для удаления(по идее должно работать, уточните multitable delete syntax http://dev.mysql.com/doc/refman/5.1/en/delete.html )

  DELETE jos_apoll_votes
  FROM jos_apoll_votes
  INNER JOIN (SELECT id FROM `jos_apoll_votes` GROUP BY ip, option_id HAVING COUNT(*) >= 3 ) t ON (t.id = jos_apoll_votes .id)
 


UPDATE
Удалить все строки, у которых ip+option_id повторяется не меньше 3 раз

  DELETE jos_apoll_votes
  FROM jos_apoll_votes
  INNER JOIN (SELECT ip, option_id FROM `jos_apoll_votes` GROUP BY ip, option_id HAVING COUNT(*) >= 3 ) t ON
(t.ip = jos_apoll_votes.ip AND t.option_id = jos_apoll_votes.option_id)