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

Jak opuścić dołączenie 2 tabel w 2 różnych bazach danych?

Możesz po prostu dołączyć do tabeli innej bazy danych. Musisz podać nazwę bazy danych w swoim FROM klauzula. Aby go skrócić, dodaj ALIAS na nim,

SELECT  a.*,          -- this will display all columns of dba.`UserName`
      b.`Message`
FROM  dba.`UserName` a  -- or LEFT JOIN to show all rows whether it exists or not
      INNER JOIN dbB.`PrivateMessage` b    
         ON a.`username` = b.`username`

ale jakoś istnieją możliwości, w których username nie będą mieć wiadomości. W takim przypadku użyj LEFT JOIN jeśli nadal chcesz pokazywać wszystkie rekordy dba.Username .

Czytając z twoich komentarzy, tabele mają różne collation . Rozwiązaniem tego problemu jest określenie COLLATE na Twoich połączonych oświadczeniach,

SELECT  a.*,          -- this will display all columns of dba.`UserName`
      b.`Message`
FROM  dba.`UserName` COLLATE latin1_swedish_ci a  
      LEFT JOIN dbB.`PrivateMessage` COLLATE latin1_swedish_ci b    
         ON a.`username` = b.`username`

możesz zmienić latin1_swedish_ci do czegokolwiek chcesz.

Aby uzyskać więcej informacji na temat COLLATION, zobacz pełną listę

Zestawy znaków i zestawienia w MySQL

Jeśli masz wystarczające uprawnienia do ALTER tabel, po prostu użyj tej składni, aby ręcznie przekonwertować i dopasować ich sortowanie,

ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql z wartościami oddzielonymi przecinkami

  2. MySQL — jeśli zaczyna się od cyfry lub znaku specjalnego

  3. Uzyskaj niezaangażowane dane w MySQL

  4. Wydajność MySQL:pojedyncza tabela lub wiele tabel

  5. Objaśnienie struktury MySQL High Availability Framework – część I:Wprowadzenie