Simplemente puede unirse a la tabla de diferentes bases de datos. Debe especificar el nombre de la base de datos en su FROM cláusula. Para acortarlo, agrega un ALIAS en eso,
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`
pero de alguna manera, hay posibilidades en las que un username no tendrá mensajes. En este caso, use LEFT JOIN si aún desea mostrar todos los registros de dba.Username .
Al leer sus comentarios, las tablas tienen diferentes collation . La solución a esto es especificar COLLATE en sus declaraciones conjuntas,
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`
puedes cambiar latin1_swedish_ci a lo que quieras.
Para obtener más información sobre COLLATION, consulte esta lista completa de
Conjuntos de caracteres y colaciones en MySQL
Si tiene suficientes privilegios para ALTER las tablas, simplemente use esta sintaxis para convertir manualmente y hacer coincidir sus intercalaciones,
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';