sql >> Databasteknik >  >> RDS >> Mysql

Hur man lämnar sammanfogar 2 tabeller på 2 olika databaser?

Du kan helt enkelt gå med i tabellen för olika databaser. Du måste ange databasnamnet i din FROM klausul. För att göra det kortare, lägg till ett ALIAS på den,

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`

men på något sätt finns det möjligheter där ett username finns kommer inte att ha meddelanden. Använd i det här fallet LEFT JOIN om du fortfarande vill visa alla poster för dba.Username .

Av dina kommentarer har tabellerna olika collation . Arbetet med detta är att specificera COLLATE på dina sammanfogade uttalanden,

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`

du kan ändra latin1_swedish_ci till vad du vill.

För mer information om SAMLING, se den här fullständiga listan över

Teckenuppsättningar och sorteringar i MySQL

Om du har tillräckligt med behörighet att ALTER tabellerna, använd helt enkelt den här syntaxen för att manuellt konvertera och matcha deras sammanställningar,

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


  1. MariaDB LCASE() Förklarad

  2. Hur får man mysqli connect att fungera?

  3. MySQL:Hur väljer jag poster för den här veckan?

  4. MySQL GROUP BY flera kolumner från olika tabeller