Tipps zur Verwendung der Funktion „Gruppieren nach“.

1. Anforderungen: Verkaufsversionskombinationen erhalten

Fügen Sie hier eine Bildbeschreibung ein
Farbe (Attributname) + (schwarz, weiß...) Attributwertsatz

    @Data
    public static class ItemSaleAttrsVo{
    
    
        private Long attrId;
        private String attrName;
        //当前属性有多少种版本:黑色,白色,蓝色,这里使用字符串拼接的方式所以没有使用集合存储
        private String attrValues;

    }

Fügen Sie hier eine Bildbeschreibung ein

Zweitens: Gruppieren Sie nach Gruppierung

Warum erhalte ich eine Fehlermeldung, wenn ich häufig „Gruppieren nach“ verwende? Wenn die Gruppierung erfolgreich sein soll, müssen Sie sicherstellen, dass die Feldwerte der Abfrageergebnisse eine Eins-zu-Eins-Beziehung aufweisen.

(1) Vor dem Gruppieren stehen die Datensätze jedes Felds in einer Eins-zu-Eins-Entsprechung.
Fügen Sie hier eine Bildbeschreibung ein
(2) Wählen Sie Feld A und Feld B aus XX aus, gruppieren Sie es nach Feld A,
wenn nur Feld A nach Gruppe gruppiert ist, wenn es nach Typ gruppiert ist , dann jeder Für jede Kategorie wird nur ein Datensatz angezeigt. Zu diesem Zeitpunkt wird eine Eins-zu-viele-Beziehung mit anderen nicht gruppierten Feldern gebildet. Dann kann
die Datenbank die Ergebnisse nicht anzeigen und es wird ein Fehler gemeldet .
Fügen Sie hier eine Bildbeschreibung ein
(3) So lösen Sie das Eins-zu-Viele-Problem und nicht gruppierte Felder Es wird auch in einen Datensatz konvertiert, sodass eine Eins-zu-eins-Eindeutigkeit garantiert werden kann. Die Ergebnisse
der Abfrage können in zwei Kategorien unterteilt werden: Auswählen Die gruppierten Felder und die Felder, die nicht an der Gruppierung von xxx teilnehmen,
verwenden „Gruppe nach“, und die Felder, die nicht an der Gruppierung teilnehmen, müssen Aggregationsfunktionen (group_concat, count, avg, sum...) verwenden, um sie in einem Datensatz zusammenzufassen
Fügen Sie hier eine Bildbeschreibung ein

3. Abfrageergebnisse

Mit der Aggregatfunktion „group_concat“ können mehrere Datensätze zusammengeführt werden
Fügen Sie hier eine Bildbeschreibung ein

SELECT 
	b.attr_id,
	b.attr_name,
	GROUP_CONCAT(DISTINCT b.`attr_value`)
FROM `pms_sku_info` a LEFT JOIN `pms_sku_sale_attr_value` b ON a.sku_id = b.sku_id
WHERE a.spu_id = 28
GROUP BY b.attr_id,b.attr_name

eindeutig nach der Deduplizierung
Fügen Sie hier eine Bildbeschreibung ein

Acho que você gosta

Origin blog.csdn.net/weixin_44847885/article/details/131229796
Recomendado
Clasificación