sql >> Database teknologi >  >> RDS >> Mysql

Hvordan slutter man sig til 2 tabeller på 2 forskellige databaser?

Du kan blot slutte dig til tabellen i forskellige databaser. Du skal angive databasenavnet i din FROM klausul. For at gøre den kortere skal du tilføje en 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å en eller anden måde, er der muligheder, hvor-i et username vil ikke have beskeder. I dette tilfælde skal du bruge LEFT JOIN hvis du stadig vil vise alle posterne for dba.Username .

Når man læser fra dine kommentarer, har tabellerne forskellig collation . Arbejdet omkring dette er at specificere COLLATE på dine forenede udsagn,

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 ændre latin1_swedish_ci til hvad du vil.

For mere information om SAMLING, se denne fulde liste over

Tegnsæt og samlinger i MySQL

Hvis du har rettigheder nok til at ALTER tabellerne, skal du blot bruge denne syntaks til manuelt at konvertere og matche deres sorteringer,

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


  1. Opdel kommaseparerede værdier af en kolonne i række via Oracle SQL-forespørgsel

  2. Sådan undslipper du mysql-specialtegn med sockets.io/node.js/javascript

  3. MySQL - Valg af data fra flere tabeller, alle med samme struktur, men forskellige data

  4. Understøtter PostgreSQL accentufølsomme sammenstillinger?