Nach diesem Beitrag: POST ÜBER CONCAT
Mein Problem ist, dass ich viele Zeilen CONCAT
in einer Zeile habe. Zum Beispiel, wenn ich 10 Zeilen mit einer Zeichenfolge um 50 Zeichen habe, zeigt meine Abfrage nur 6-7 dieser Zeilen oder so ähnlich.
Ich searech im Stapel und google und ich fand, dass ich CONCAT maximale Länge durch Befehl ändern kann: SET group_concat_max_len := @@max_allowed_packet
. Was mache ich falsch?
BEARBEITEN:
Wenn ich SHOW VARIABLES LIKE 'group_concat_max_len'
zeige, zeigt es mir 1024.
Mysql Version 5.0.96-log. Tabellentyp: MyISAM. Sieht so aus, als hätte es keine Grenzen. Ich versuche, ein einfaches varchar mit 2000 Zeichen zu wählen, und es sieht gut aus.
Ich habe 3 Tabellen: 1st - Item mit ItemID, 2nd - Descriptionpack mit ItemID und DescriptionID, 3rd Description mit DescriptionID.
Select
DISTINCT Item.ItemID as item
,GROUP_CONCAT(Description.DescriptionID) AS description
From Item
LEFT OUTER JOIN descriptionpack
on Item.ItemID=descriptionpack.ItemID
LEFT OUTER JOIN description
on descriptionpack.descriptionID=description.descriptionID
GROUP BY item
EDIT2: Ich glaube, ich habe das Problem gefunden, ich habe mein Problem mit meinem Provider gesagt und sie antworten mir:
Ich habe Ihre Frage mit unserem Hosting-Team besprochen. Du würdest es nicht können um die globalen Einstellungen für diese und andere Variablen zu ändern. Jedoch, Sie sollten in der Lage sein, diese Variable für jede Sitzung einzeln festzulegen Setzen Sie es zuerst, vor anderen Abfragen. Ich hoffe, das hilft.
Also jetzt ist das Problem, wie man das macht.
Vermutlich verwenden Sie GROUP_CONCAT()
, nicht einfach CONCAT()
.
Der Standardwert von group_concat_max_len
ist 1024, was eine ziemlich kleine Grenze ist, wenn Sie große lange Verkettungen aufbauen.
Um es zu ändern, verwenden Sie diesen Befehl. Ich habe die Länge in diesem Beispiel auf 100.000 festgelegt. Sie könnten es auf alles einstellen, was Sie brauchen.
%Vor%Der übliche Wert für max_allowed_packet ist ein Megabyte, was wahrscheinlich mehr ist, als Sie benötigen.
group_concat_max_len
selbst hat eine unbegrenzte Größe . Es ist nur durch die vorzeichenlose Wortlänge der Plattform begrenzt: 2 ^ 32-1 auf einer 32-Bit-Plattform und 2 ^ 64-1 auf einer 64-Bit-Plattform.
Wenn das immer noch nicht genug für Ihre Bewerbung ist, ist es an der Zeit, @ uggyals Vorschlag zu nehmen und Ihre Herangehensweise zu überdenken.
Tags und Links mysql aggregate-functions concat