Você pode simplesmente juntar a tabela de banco de dados diferente. Você precisa especificar o nome do banco de dados em seu
FROM
cláusula. Para torná-lo mais curto, adicione um ALIAS
nele, 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`
mas de alguma forma, existem possibilidades em que um
username
não terá mensagens. Neste caso, use LEFT JOIN
se você quiser ainda mostrar todos os registros de dba.Username
. Lendo seus comentários, as tabelas têm diferentes
collation
. A solução para isso é especificar COLLATE
em suas declarações combinadas, 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`
você pode alterar
latin1_swedish_ci
para o que você quiser. Para obter mais informações sobre COLLATION, consulte esta lista completa de
Conjuntos de caracteres e agrupamentos no MySQL
Se você tiver privilégios suficientes para
ALTER
as tabelas, basta usar esta sintaxe para converter manualmente e combinar seus agrupamentos, ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';