Możesz po prostu dołączyć do tabeli innej bazy danych. Musisz podać nazwę bazy danych w swoim FROM
klauzula. Aby go skrócić, dodaj ALIAS
na nim,
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`
ale jakoś istnieją możliwości, w których username
nie będą mieć wiadomości. W takim przypadku użyj LEFT JOIN
jeśli nadal chcesz pokazywać wszystkie rekordy dba.Username
.
Czytając z twoich komentarzy, tabele mają różne collation
. Rozwiązaniem tego problemu jest określenie COLLATE
na Twoich połączonych oświadczeniach,
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`
możesz zmienić latin1_swedish_ci
do czegokolwiek chcesz.
Aby uzyskać więcej informacji na temat COLLATION, zobacz pełną listę
Zestawy znaków i zestawienia w MySQL
Jeśli masz wystarczające uprawnienia do ALTER
tabel, po prostu użyj tej składni, aby ręcznie przekonwertować i dopasować ich sortowanie,
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';