Suche elegante Lösung (MySQL Query)

Könnt Ihr mir bitte kurz helfen?

Ich möchte das zweifache CONCAT’en der Felder (ID, Name…) verhindern.

SELECT CONCAT(
SHA2(CONCAT(`ID`, ":", `NAME`, ":", `Kennwort`, ":", `Spitzname`, ":", `ePost`, ":", `ZuletztAktiv`), 512),
SHA1(CONCAT(`ID`, ":", `NAME`, ":", `Kennwort`, ":", `Spitzname`, ":", `ePost`, ":", `ZuletztAktiv`))) AS `Löschkode` FROM `Benutzer` WHERE ID=?;

Versuche:

/* Problem: Fehlermeldung! */
-- SET @Felder: SELECT CONCAT(`ID`, ":", `NAME`, ":", `Kennwort`, ":", `Spitzname`, ":", `ePost`, ":", `ZuletztAktiv`) AS `Felder` FROM `Benutzer` WHERE ID=?;

/* Problem: 2 Ergebnisse! */
-- SELECT @Felder := CONCAT(`ID`, ":", `NAME`, ":", `Kennwort`, ":", `Spitzname`, ":", `ePost`, ":", `ZuletztAktiv`) FROM `Benutzer` WHERE ID=?;
-- SELECT CONCAT(SHA2(@Felder, 512), SHA1(@Felder)) AS `Löschkode`;

/* Problem: Felder werden als Ergebnis mit ausgegeben! */
SELECT @Felder:=CONCAT(`ID`, ":", `NAME`, ":", `Kennwort`, ":", `Spitzname`, ":", `ePost`, ":", `ZuletztAktiv`) AS `Felder`, CONCAT(SHA2(@Felder, 512), SHA1(@Felder)) AS `Löschkode` FROM `Benutzer` WHERE ID=?; /* 128 + 40 Zeichen */

SET @Felder = NULL;

Danke!

OMG, ich bin so eine NULL! :blush:

SELECT IF(@Felder:=CONCAT(`ID`, ":", `NAME`, ":", `Kennwort`, ":", `Spitzname`, ":", `ePost`, ":", `ZuletztAktiv`) IS NULL, NULL, CONCAT(SHA2(@Felder, 512), SHA1(@Felder))) AS `Löschkode` FROM `Benutzer` WHERE ID=?;
SET @Felder = NULL;