Pit: mysql: Query gesucht

Beitrag lesen

Hallo Forum,

ich habe eine String-Spalte in mysql, die ich je nach Status in verschiedenen Nummernkreisen mit einem Kürzel vorangestellt hochzähle. Der Status des Vorganges steht in einer eigenen Spalte.


Beispiel: 
KL-0001 bis KL-9999 (innerhalb dieses Nummernkreises stehen auch KLB-Vorgänge)
FC-0001 bis FC-9999 (innerhalb dieses Nummernkreises stehen auch FCL-Vorgänge)
usw.

.


Tabelle:
ID|myStatus|MeineSpalte
1|KL|KL-0012
2|KLB|KLB-0013
3|FCL|FCL-0001
4|FC|FC-0002
usw.

Nun möchte ich in einer Abfrage z.b für den Status KL den derzeit höchsten Wert ermitteln:

SELECT
LPAD(MAX(CAST(SUBSTRING_INDEX(MeineSpalte, "-", -1) AS Wert)),4,"0") 
FROM myTable 
WHERE (myStatus= 'KL' OR myStatus = 'KLB')

Das funktioniert soweit auch sehr gut, selbst mit Datenbanken mit sehr vielen Einträgen.

Meine Frage:

Ich hätte gerne aus derselben Zeile des Maximumwertes auch die dazugehörige ID dieses Eintrages.

Also zum Beispiel:

Wert=0013 --> dazugehörige ID=2

Ich habe zwar auch hierzu eine Query, die funktioniert, aber die ist riesig lang und ich frage mich, ob es nicht auch leichter geht:

Select ID 
from myTable 
where 
(myStatus = 'KL' OR myStatus='KLB') 
AND (CAST(SUBSTRING_INDEX(MeineSpalte, "-", -1) AS Wert)) = 
(SELECT LPAD(MAX(CAST(SUBSTRING_INDEX(MeineSpalte, "-", -1) AS Wert)),4,"0") 
FROM myTable 
WHERE (myStatus = 'KL' OR myStatus='KLB')) 

Gruß, Pit