To może nie być zbyt sensowne, ale chciałbym, aby MySQL zwróciło mi dokładnie duplikaty wierszy, jeśli są powielone kryteria w klauzuli WHERE IN
. czy to możliwe?Wymuś na MySQL duplikaty z klauzuli WHERE IN bez użycia JOIN/UNION?
Właśnie ten przykład:
SELECT
columns
FROM
table
WHERE
id IN(1, 2, 3, 4, 5, 1, 2, 5, 5)
I'ld jak MySQL powrotu mi rzędy id trzy razy 5, dwa identyfikatory 1 i 2, 3 i 4, jeden raz.
Jako długości z IN
argumentów, a także duplikatu count (raz, dwa, trzy razy, etc.), będzie arbitralny nie chcę polegać na UNION
lub JOIN
. Czy coś takiego jest możliwe inaczej?
Cześć Mark, dzięki za odpowiedź. Wygląda na to, że po prostu będę musiał połączyć się z JOIN i UNION. Nie zdawałem sobie sprawy z użycia UNION w sposób, w jaki używasz go tutaj. Nie jestem nawet pewien, czy całkowicie to rozumiem. :) Ale wygląda bardzo fajnie! Powodem, dla którego nie chciałem początkowo używać UNION, jest to, że myślałem, że muszę powtarzać dokładne instrukcje SELECT w kółko. Wygląda to jednak o wiele czystsze. –
Nawiasem mówiąc, czy te UNIONY zagwarantują dokładną kolejność wyników, czy nadal będę musiał użyć klauzuli ORDER, aby zamówić je dokładnie tak, jak poszły w oświadczeniu? –
* potrzebujesz * zamówienia, jeśli chcesz zagwarantować zamówienie. To zawsze prawda. Na szczęście łatwo jest zmienić powyższe zapytanie: "WYBIERZ 1 jako ID, 1 jako SortOrder UNION ALL SELECT 2, 2 UNION ALL SELECT 3, 3' itd ... następnie" ORDER BY SortOrder' na końcu po "JOIN ... WŁĄCZ ... '. –