Pozwala tylko powiedzieć, że mam 2 zestawy wynik następującoMySQL: Łącząc wyniki 2 kolumny w jednej instrukcji
R1 R2
| 1 | | 5 |
| 2 | | 6 |
| 3 | | 7 |
| 4 | | 8 |
muszę połączyć te wynikają w jednym zestawie, Więc musiałbym coś podobnego to:
R3
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
Obecnie robię to z aa UNII tak:
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
Zasadniczo kończę wykonywanie tej samej operacji dwa razy na stole, Po prostu pobierając różne wiersze za każdym razem. Czy istnieje skuteczniejszy sposób, w jaki mógłbym to zrobić? Potrzebuję wynik w jednej kolumnie, ponieważ jest to ograniczenie IN. W dłuższej perspektywie, co muszę zrobić to
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)
Czy istnieje lepszy sposób, aby przejść o znalezienie tego wszystkiego? Każda pomoc jest mile widziana.
SQL deklaruje wynik Wanted, a nie metodę obliczeniową. Do tego użyj polecenia 'EXPLAIN' –
Nie możesz użyć' SELECT c_1 jako r1, c_2 jako r2 ... '? Czy używasz zmiennej 'result'? – bozdoz
Osobiście unikam używania IN, kiedy tylko to możliwe, chyba że wiem, że zawsze będzie to mały zestaw w małym stoliku. Odpowiedź Michaela Berkowskiego jest moim preferowanym sposobem używania 'wewnętrznego połączenia'. Upewnij się tylko, czy masz indeksy na wszystko, co zamierzasz używać jako klucze, lub skonfiguruj odpowiednie klucze obce pod względem wydajności. – Levi