2017-02-07 11 views
0

Ich Frage MySQL-Datenbank (fintech_16) durch Python (pymysql), um eindeutige Werte einer Spalte (Trend) zu erhalten. Wenn ich die folgende Abfrage ausgeführt:MySQL bricht Spaltenwerte durch Komma

cursor.execute ("SELECT DISTINCT `Trend` FROM `fintech_16` ") 
cursor.fetchall() 

bekam ich folgendes Ergebnis:

((u'Investments',), 
(u'Expansion',), 
(u'New Products',), 
(u'Collaboration',), 
(u'New Products,Investments',), 
(u'New Products,Expansion',), 
(u'Expansion,Investments',), 
(u'New Products,Collaboration',), 
(u'Regulations',), 
(u'Investments,New Products',), 
(u'Investments,Expansion',), 
(u'Collaboration,Investments',), 
(u'Expansion,New Products',), 
(u'Collaboration,New Products',)) 

Jetzt. Da einige der IDs mehr als einen Trend hatten, zählt die DB sie als separaten Trend.

Wie soll ich meine Abfrage optimieren, um nur die 5 Trends (Investitionen, Erweiterung, neue Produkte, Zusammenarbeit, Verordnungen) zusammen mit ihren zählt?

Obwohl diese nur 5 sind, kann ich die LIKE %Investments% verwenden, um die Anzahl manuell zu erhalten, aber ich möchte den Code/die Abfrage, es zu tun.

TIA

+0

Was ist Ihre erwartete Ausgabe. Bearbeiten und fügen Sie es zu Ihrer Frage oben hinzu. –

+0

GIGO. Siehe Normalisierung. – Strawberry

Antwort

-1

Erster Ansatz ist SET Datentyp zu verwenden, genaue Werte zu definieren, Sie 5 haben - [ 'Neue Produkte', 'Investitionen', 'Expansion' ...].

Dann könnten Sie FIND_IN_SET Funktion verwenden, um Werte zu zählen, die Sie brauchen:

SELECT COUNT(*) FROM `fintech_16` WHERE FIND_IN_SET('New Products', `Trend`) > 0; 
+0

... was ist los? – Devart

Verwandte Themen