Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Mysql group_concat ग्रुपिंग में पंक्तियों को सीमित करता है

MySQL इस तरह की क्वेरी को आसान नहीं बनाता है, लेकिन एक (निश्चित रूप से बहुत सुंदर नहीं) समाधान प्रत्येक पंक्ति को एक अनुक्रम संख्या प्रति गंतव्य देने के लिए एक चर का उपयोग करना है और पंक्ति संख्या पूर्णांक द्वारा समूह को दो नंबर प्राप्त करने के लिए 2 से विभाजित करना है। प्रत्येक समूह;

SELECT dest, GROUP_CONCAT(port ORDER BY rank) ports
FROM (
  SELECT dest, port, ( 
      CASE dest WHEN @curDest 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curDest := dest END) rank
  FROM tb_port a
  JOIN tb_rule c ON a.id = c.id_port
  JOIN tb_dest b ON b.id = c.id_dest, 
    (SELECT @curRow := 0, @curDest := '') r
  ORDER BY dest
) z
GROUP BY FLOOR(rank/2),dest
ORDER BY dest, MIN(rank)

परीक्षण के लिए एक SQLfiddle



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में रेगेक्स पैटर्न को कैसे बदलें

  2. MySQL - सक्रिय/निष्क्रिय/प्रतिबंधित उपयोगकर्ताओं की गणना करें और एक क्वेरी में स्थिति के आधार पर उपयोगकर्ताओं का चयन करें

  3. क्या मैं Laravel के डेटाबेस लेयर स्टैंडअलोन का उपयोग कर सकता हूं?

  4. मैं MySQL में प्रत्येक पंक्ति में कैसे जोड़ूं?

  5. Django को असमर्थित MySQL ड्राइवरों जैसे gevent-mysql या Concurrence के MySQL ड्राइवर के साथ कैसे काम करें?