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';