テーブルの作成
CREATE TABLE `users` (
`id` INT UNSIGNED NOT NULL,
`name` VARCHAR(100) NOT NULL,
PRIMARY KEY(`id`)
);
CREATE TABLE `email_address` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`email_address` VARCHAR(50) NOT NULL,
INDEX pn_user_index(`user_id`),
FOREIGN KEY (`user_id`) REFERENCES users(`id`) ON DELETE CASCADE,
PRIMARY KEY(`id`)
);
データ挿入
INSERT INTO users (id, name) VALUES (1, 'Mark'), (2, 'Tom'), (3, 'Robin');
INSERT INTO email_address (user_id, email_address) VALUES
(1, 'mark@gmail.com'), (1, 'mark@yahoo.com'), (1, 'mark@msn.com'),
(2, 'tom@gmail.com'), (2, 'tom@yahoo.com'), (2, 'tom@msn.com'),
(3, 'robin@gmail.com'), (3, 'robin@yahoo.com'), (3, 'robin@msn.com');
SQL クエリ
SELECT usr.name AS name
, (SELECT email.email_address
FROM email_address AS email
WHERE email.user_id = usr.id) AS email
FROM users AS usr;
上記のMySQLクエリを使用して、MySQLエラー「サブクエリが複数の行を返します」を回避し、特定のユーザーに関連するすべての電子メールアドレスを以下のように選択するにはどうすればよいですか. ありがとう。
+----------+-------------------------------------------------+
| name | email |
+----------+-------------------------------------------------+
| Mark | mark@gmail.com, mark@yahoo.com, mark@msn.com |
| Tom | tom@gmail.com, tom@yahoo.com, tom@msn.com |
| Robin | robin@gmail.com, robin@yahoo.com, robin@msn.com |
+----------+----------+--------------------------------------+