sql >> データベース >  >> RDS >> Mysql

2つの異なるデータベースで2つのテーブルを左結合する方法は?

    別のデータベースのテーブルに参加するだけです。 FROMでデータベース名を指定する必要があります 句。短くするには、ALIASを追加します その上で、

    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`
    

    しかし、どういうわけか、usernameには可能性があります メッセージはありません。この場合、LEFT JOINを使用します dba.Usernameのすべてのレコードを引き続き表示する場合 。

    コメントを読むと、テーブルのcollationは異なります。 。これに対する回避策は、COLLATEを指定することです。 参加したステートメントについて

    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`
    

    latin1_swedish_ciを変更できます 好きなように。

    COLLATIONの詳細については、この

    の完全なリストを参照してください。

    MySQLの文字セットと照合

    ALTERに十分な権限がある場合 テーブルの場合は、この構文を使用して、それらの照合を手動で変換して一致させます。

    ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';
    


    1. MYSQLでストップワードをリセットするにはどうすればよいですか?

    2. SQLServerで1つのデータベースのアクティビティを分析する方法

    3. ルームライブラリはアセットフォルダからデータベースをコピーできますか?

    4. 1人の人が複数のアカウントを作成するのを防ぐ最良の方法