Konwersja SELECT Różne żądania OT. Postgresql przed MySQL
użyłem
PostgreSQL
, A teraz migrują
MySQL
.
W moich prośbach używam
PostgreSQL
' s
, Zastanawiałem się, czy nie było jakieś analogowe tego oświadczenia
MySQL
.
PostgreSQL
, A teraz migrują
MySQL
.
W moich prośbach używam
PostgreSQL
' s
SELECT DISTINCT ON /col1, col2, col3/
, Zastanawiałem się, czy nie było jakieś analogowe tego oświadczenia
MySQL
.
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
4 odpowiedzi
Mieczysław
Potwierdzenie od:
Postgresql SELECT Wyraźnie włącznie
.
W Postgresql Poniższy wniosek usunie wszystkie linie, w których wyrażenia
pokrywa się i utrzymuje tylko "first col4, col5 row" Dla każdego zestawu dopasowanych strun:
Więc jeśli twój stół to:
Nasza prośba zapisz tylko jedną linię /1,2,3/ i jedna linia /3,3,3/. Następnie wynikowe linie będą:
Proszę to zanotować "first row" Każdy zestaw jest nieprzewidywalny, nasz pierwszy wiersz może być /888, 999/, Jeśli nie określamy zamówienia przez:
/wyrażenie DISTINCT on musi odpowiadać najwcześniejszym kolejności wyrażeń BY, Ale zamówienie BY może zawierać dodatkowe wyrażenia/.
MySQL Ekspansja do GROUP BY
MySQL Rozszerza się
http://dev.mysql.com/doc/refma ... .html
, więc możemy select Niezrównane kolumny niewymienione we wniosku GROUP BY. Za każdym razem, gdy używamy innych diagnozowanych kolumn, serwer może swobodnie wybrać dowolną wartość z każdej grupy z tej kolumny, więc wynikowe wartości będą niepewne.
Więc to prośba Postgresql:
można uznać za równoważny z tym żądaniem MySQL:
i Postgresql, i MySQL Powrót "First row" dla każdego /col1, col2, col3/, W obu przypadkach zwrócona linia jest nieprzewidywalna, ponieważ nie wskazaliśmy i nie usprawniliśmy oferty.
Wiele osób byłoby bardzo podatne na przekształcenie tego żądania. Postgresql przez ORDER BY:
z tym:
Pomysł ma zastosowanie ORDER BY do podzapytania, aby podczas grupowania MySQL przez col1, col2, col3 Utrzymywał pierwszą wartość spotkania col4 i col5.
Pomysł jest dobry, ale błędny!
MySQL może swobodnie wybrać dowolną wartość dla col4 i col5, I nie wiemy, które z nich są po pierwsze, zależy to od optymalizatora. Dlatego naprawiłbym to tak:
Ale staje się coraz bardziej trudniejsze.
Wynik
Z reguły nie ma dokładnego sposobu konwersji żądania Postgresql cieszący się popytem MySQL, Ale istnieje wiele utworów obejściowych, wynikający z tego wniosek może być tak prosty jak oryginał, lub może stać się bardzo trudny, ale zależy od samego żądania.
Leszek
Potwierdzenie od:
Jak wskazano @a_horse_with_no_name, Działa dlatego MySQL Pozwala częściowe
, W przeciwieństwie do innych DBMSs.
Na przykład:
Wniosek o pierwsze zamówienie każdego klienta:
Wynik:
[/url]
Józef
Potwierdzenie od:
Artur
Potwierdzenie od:
PDO
lub
MSYQLI
zamiast
MYSQL
, Ponieważ jest już przestarzały.
Możesz zrobić o swoim pytaniu
lub