Puoi semplicemente unirti alla tabella di diversi database. Devi specificare il nome del database nel tuo FROM
clausola. Per accorciarlo, aggiungi un ALIAS
su di esso,
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`
ma in qualche modo, ci sono possibilità in cui in un username
non avrà messaggi In questo caso usa LEFT JOIN
se vuoi comunque mostrare tutti i record di dba.Username
.
Leggendo dai tuoi commenti, le tabelle hanno collation
diverse . La soluzione è specificare COLLATE
sulle tue dichiarazioni unite,
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`
puoi cambiare latin1_swedish_ci
a quello che vuoi.
Per maggiori informazioni su COLLATION, consulta questo elenco completo di
Set di caratteri e confronti in MySQL
Se hai abbastanza privilegi per ALTER
le tabelle, usa semplicemente questa sintassi per convertire manualmente e abbinare le loro regole di confronto,
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';