Das ist vielleicht nicht sehr sinnvoll, aber ich möchte, dass MySQL mir die genauen doppelten Zeilen zurückgibt, wenn es doppelte Kriterien in der WHERE IN
Klausel gibt. Ist das möglich?Erzwinge MySQL, dass Duplikate aus der WHERE IN-Klausel zurückgegeben werden, ohne JOIN/UNION zu verwenden?
dieses Beispiel nehmen:
SELECT
columns
FROM
table
WHERE
id IN(1, 2, 3, 4, 5, 1, 2, 5, 5)
I'ld wie MySQL mich zurück Zeilen mit id 5 dreimal, die ID 1 und 2 zweimal, und 3 und 4 einmal.
Als Länge der IN
Argumente sowie die doppelte Zählung (einmal, zweimal, dreimal, etc.), wird willkürlich sein, die ich auf UNION
oder JOIN
verlassen wollen nicht. Ist so etwas sonst möglich?
Hallo Markus, danke für deine Antwort. Nach dem Aussehen der Dinge, denke ich, werde ich dann einfach mit JOIN und UNION gehen müssen. Ich war mir der Verwendung von UNION nicht bewusst, so wie Sie es hier benutzen. Ich bin mir nicht einmal sicher, ob ich es vollständig verstehe. :) Aber es sieht sehr schick aus! Der Grund, warum ich UNION zunächst nicht verwenden wollte, ist, weil ich dachte, ich müsste die SELECT-Anweisungen immer wieder wiederholen. Dies sieht jedoch viel sauberer aus. –
Werden diese UNIONs übrigens die genaue Reihenfolge des Ergebnisses garantieren, oder muss ich immer noch eine ORDER-Klausel verwenden, um sie genau so zu bestellen, wie sie in der Erklärung standen? –
Sie benötigen * eine Bestellung, wenn Sie die Bestellung garantieren möchten. Das ist immer wahr. Glücklicherweise ist es einfach, die obige Abfrage zu ändern: 'SELECT 1 als ID, 1 als SortOrder UNION ALL SELECT 2, 2 UNION ALLE SELECT 3, 3' etc ... dann' ORDER BY SortOrder' am Ende nach dem 'JOIN .. . ON ... '. –