Kombination Nehmen wir nur 2 Ergebnismengen Ich habe alsMySQL: die Ergebnisse von zwei Spalten in einer Anweisung
R1 R2
| 1 | | 5 |
| 2 | | 6 |
| 3 | | 7 |
| 4 | | 8 |
folgt ich diese Folge in einen einzigen Satz kombinieren müssen, Also etwas, was ich möchte dies:
R3
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
Derzeit ich tue dies mit aa UNION etwa so:
SELECT c_1 AS result FROM table WHERE c_1=3 OR c_2=3
UNION
SELECT c_2 AS result FROM table WHERE c_1=3 OR c_2=3
Im Grunde habe ich am Ende die gleiche Operation zweimal auf der Tabelle, Nur verschiedene Zeilen jedes Mal abrufen. Gibt es einen effizienteren Weg, dies zu tun? Ich brauche das Ergebnis in einer einzigen Spalte, da dies eine Einschränkung von IN ist. Auf lange Sicht, was ich tun muss, ist dies
SELECT name FROM person WHERE person_id IN
(SELECT c_1 AS result FROM table WHERE c_1=3 OR c_2=3
UNION
SELECT c_2 AS result FROM table WHERE c_1=3 OR c_2=3)
Gibt es einen besseren Weg, um zu gehen, all das zu finden? Jede Hilfe ist willkommen.
SQL ausführen erklärt das gewünschte Ergebnis, nicht die Berechnungsmethode. Benutzen Sie dazu den Befehl 'EXPLAIN' –
Können Sie nicht' SELECT c_1 als r1, c_2 als r2 ... 'verwenden? Verwenden Sie auch die Variable 'result'? – bozdoz
Persönlich vermeide ich die Verwendung von IN wann immer es möglich ist, es sei denn, ich weiß, dass es immer ein kleiner Satz in einer kleinen Tabelle sein wird. Michael Berkowskis Antwort ist mein bevorzugter Weg mit 'inner join'. Stellen Sie nur sicher, dass Sie Indizes für alles haben, was Sie als Schlüssel verwenden möchten, oder richten Sie geeignete Fremdschlüssel für die Leistung ein. – Levi