sql >> Database >  >> RDS >> Mysql

Hoe links deelnemen aan 2 tabellen op 2 verschillende databases?

U kunt eenvoudig deelnemen aan de tabel van verschillende databases. U moet de databasenaam opgeven in uw FROM clausule. Voeg een ALIAS . toe om het korter te maken erop,

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`

maar op de een of andere manier zijn er mogelijkheden waar-in een username zal geen berichten hebben. Gebruik in dit geval LEFT JOIN als u toch alle records van dba.Username . wilt tonen .

Uit uw opmerkingen te lezen, hebben de tabellen verschillende collation . U kunt dit omzeilen door COLLATE op te geven op uw samengevoegde verklaringen,

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`

je kunt latin1_swedish_ci change wijzigen naar wat je maar wilt.

Voor meer informatie over COLLATION, zie deze volledige lijst van

Tekensets en verzamelingen in MySQL

Als je genoeg privileges hebt om ALTER de tabellen, gebruik gewoon deze syntaxis om hun sorteringen handmatig te converteren en te matchen,

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


  1. Waarom is PostgreSQL-arraytoegang zo veel sneller in C dan in PL/pgSQL?

  2. Unicode-gegevens weergeven met PHP

  3. Vier manieren om Microsoft Access te gebruiken

  4. Waarom kan ik geen triggers maken voor objecten die eigendom zijn van SYS?