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

Zaznaczanie wielu kolumn/pól w podzapytaniu MySQL

Tak, możesz to zrobić. Potrzebny talent to koncepcja, że ​​istnieją dwa sposoby na usunięcie stołów z serwera stołowego. Jednym ze sposobów jest ..

FROM TABLE A

Inny sposób to

FROM (SELECT col as name1, col2 as name2 FROM ...) B

Zauważ, że klauzula select i nawiasy wokół niej stół, wirtualny stół.

Tak więc, korzystając z drugiego przykładu kodu (zgaduję, że masz nadzieję pobrać tutaj):

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

Zauważ, że twój prawdziwy attribute tabeli jest pierwszą tabelą w tym sprzężeniu i ta wirtualna tabela, którą nazwałem b to druga tabela.

Ta technika jest szczególnie przydatna, gdy wirtualna tabela jest pewnego rodzaju tabelą podsumowującą. np.

SELECT a.attr, b.id, b.trans, b.lang, c.langcount
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)
JOIN (
 SELECT count(*) AS langcount,  at.attribute
 FROM attributeTranslation at
 GROUP BY at.attribute
) c ON (a.id = c.attribute)

Widzisz, jak to idzie? Wygenerowałeś wirtualną tabelę c zawierające dwie kolumny, połączył je z pozostałymi dwoma, użył jednej z kolumn dla ON klauzuli i zwrócił drugą jako kolumnę w zestawie wyników.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak upewnić się, że Twoja baza danych MySQL jest zabezpieczona?

  2. Policz wystąpienia podciągu w kolumnie MySQL

  3. przekonwertuj datę php na format mysql

  4. Schemat bazy danych systemu wiadomości

  5. MYSQL auto_increment_increment