1 つのクエリでマージしたい 2 つの mysql テーブルがあります。それは例によって最もよく説明されています:
table: users
| user_id | username |
| 1 | jason |
| 2 | justin |
table: user_data
| user_id | key | data |
| 1 | email | jason@email.com |
| 1 | phone | 555-123-4567 |
| 2 | email | justin@email.com|
| 2 | phone | 555-765-4321 |
query results:
| user_id | username | email | phone |
| 1 | jason | jason@email.com | 555-123-4567 |
| 2 | justin | justin@email.com | 555-765-4321 |
キーはすべてのユーザー間でかなり均一であると想定できます (つまり、すべてのユーザーが電子メールと電話を持っています)。私の最初の考えは、このようなことをすることですが、より良い方法があるかどうか興味があります:
SELECT *,e.data as email,p.data as phone FROM users u
LEFT JOIN user_data AS e ON e.user_id=u.user_id AND `key`='email'
LEFT JOIN user_data AS p ON p.user_id=u.user_id AND `key`='phone';