Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann man 2 Tische in 2 verschiedenen Datenbanken links verbinden?

Sie können einfach der Tabelle verschiedener Datenbanken beitreten. Sie müssen den Datenbanknamen in Ihrem FROM angeben Klausel. Um es zu verkürzen, fügen Sie einen ALIAS hinzu drauf,

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`

aber irgendwie gibt es Möglichkeiten, in denen ein username enthalten ist wird keine Nachrichten haben. Verwenden Sie in diesem Fall LEFT JOIN wenn Sie trotzdem alle Datensätze von dba.Username anzeigen möchten .

Wenn Sie Ihren Kommentaren entnehmen, haben die Tabellen unterschiedliche collation . Um dies zu umgehen, geben Sie COLLATE an auf Ihren verbundenen Kontoauszügen,

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`

Sie können latin1_swedish_ci ändern zu was auch immer Sie wollen.

Weitere Informationen zu COLLATION finden Sie in dieser vollständigen Liste von

Zeichensätze und Sortierungen in MySQL

Wenn Sie über ausreichende Berechtigungen zum ALTER verfügen die Tabellen, verwenden Sie einfach diese Syntax, um ihre Sortierungen manuell zu konvertieren und abzugleichen,

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