Wenn ich sage:
select max(length(Name))
from my_table
Ich bekomme das Ergebnis als 18, aber ich möchte auch die betroffenen Daten. Also wenn ich sage:
select max(length(Name)),
Name
from my_table
...es funktioniert nicht. Ich denke, es sollte eine Selbstverbindung geben, die ich nicht herausfinden kann.
Kann mir bitte jemand einen Hinweis geben?
Antworten:
quelle
Bearbeitet, funktioniert für unbekannte max () Werte:
quelle
name
die eine maximale Länge von 18select max(length(Name)) as num1,Name from my_table group by Name having num1 = 18
, da ich aus der ersten Abfrage weiß, dass max 18 ist. Aber wie kann man das zu einer Abfrage kombinieren?Ok, ich bin nicht sicher, was Sie verwenden (MySQL, SLQ Server, Oracle, MS Access ..). Sie können jedoch den folgenden Code ausprobieren. Es funktioniert in der W3School-Beispiel-DB. Hier versuchen Sie dies:
quelle
Verwenden:
... vorausgesetzt, Sie kennen die Länge vorher. Wenn Sie dies nicht tun, verwenden Sie:
quelle
Dadurch erhalten Sie die Datensätze in dieser bestimmten Spalte mit der maximalen Länge.
quelle
Falls Sie sowohl max als auch min aus derselben Tabelle benötigen:
quelle
Dies beinhaltet zwei Tischscans und ist daher möglicherweise nicht sehr schnell!
quelle
Verwenden Sie CHAR_LENGTH () anstelle von LENGTH (), wie in: MySQL - length () vs char_length () vorgeschlagen.
SELECT name, CHAR_LENGTH (name) AS mlen FROM mytable ORDER BY mlen DESC LIMIT 1
quelle
Ich nehme an, Sie könnten eine Lösung wie diese verwenden:
Könnte aber nicht die optimale Lösung sein ... Aber scheint zu funktionieren.
quelle