Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy istnieje sposób na przestawianie wierszy do kolumn w MySQL bez użycia CASE?

Link, który podał Kangkan, pokaże Ci, jak to zrobić, gdybyś znał wcześniej nazwy kolumn. Idziemy do tej samej logiki, z wyjątkiem użycia dynamicznego SQL do zbudowania instrukcji. Każde pole składa się z 2 części, które musisz uwzględnić, pole w instrukcji select i odpowiednie sprzężenie, aby uzyskać wartość... więc musimy utworzyć instrukcję z dwóch części

Najpierw zadeklaruj 3 zmienne, aby to zbudować... W tym przykładzie użyję @select, @join i @sql. Nadaj zmiennym wartości początkowe

 set @select = 'select user_id,'
 set @join = 'from table t'

teraz zadeklaruj i załaduj kursor z odrębnymi wartościami w polu table.key. Użyję @field, ponieważ zmienna zostanie wypełniona odrębnym polem table.key. Następnie przejdź przez nią, tworząc dwie zmienne:

 set @select = @select + ', ' + @field + '.value as '[email protected]+'
 set @join = @join + ' left join table ' + @field + 'on '[email protected]+'.key = t.key and and '[email protected]+'.user_id = t.user_id

(połączenie jest zaprojektowane tak, aby używać wartości w @field jako aliasu tabeli)

zapętlaj kursor, budując @select i @join. Na końcu pętli:

set @sql = @select + @join + 'where clause if you want'
exec @sql

Dynamiczny SQL zbudowany w ten sposób może być absolutnym problemem przy rozwiązywaniu problemów (i rozwiązywaniu problemów) i otwieraniu problemów związanych z bezpieczeństwem… ale to jedyny sposób, w jaki mogę to osiągnąć. Zwróć uwagę na ograniczenia rozmiaru zmiennych… jeśli masz zbyt wiele odrębnych kluczy, zmienne stają się zbyt duże. Przepraszam, że nie mogę być bardziej dokładny z pseudonimem w tym temacie... Przekonasz się, że budowanie dynamicznego sql w sql jest żmudne.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CodeIgniter- aktywny wpis rekordu, jeśli nowy lub aktualizacja na duplikacie

  2. Przykładowa baza danych MySQL

  3. MySQL pomija pierwszy wiersz

  4. porównywanie daty i czasu php

  5. Jak zaimportować plik Excel do bazy danych mysql z PHP