INSERT INTO `mailinglist_archives`
(`recipients`)
SELECT `email`
FROM mailinglist
SQL结果:
row 1 - xxxx@gmail.com
row 2 - sss@gmail.com
row 3 - abc@gmail.com
row 4 - orange@gmail.com
我需要什么 -
row 1 - xxxx@gmail.com,sss@gmail.com,abc@gmail.com,orange@gmail.com
答案 0 :(得分:4)
试试这个
INSERT INTO `mailinglist_archives`
(`recipients`)
SELECT GROUP_CONCAT(`email`)
FROM mailinglist
答案 1 :(得分:4)
您可以使用GROUP_CONCAT
:
INSERT INTO `mailinglist_archives`
(`recipients`)
SELECT GROUP_CONCAT(`email`)
FROM mailinglist
那就是说,这不是一个好主意;您应该规范化数据库,而不是将列表存储在列中。
编辑以解决评论:
您可以将这两个查询结合起来:
$query0 = "INSERT INTO mailinglist_archives (subject, message, datesent) VALUES ('$subject', '$ckcontent', '$timestamp')";
$query01 = "INSERT INTO mailinglist_archives (recipients) SELECT GROUP_CONCAT(email) FROM mailinglist";
像这样:
INSERT INTO mailinglist_archives (subject, message, datesent, recipients)
SELECT '$subject', '$ckcontent', '$timestamp', GROUP_CONCAT(email) FROM mailinglist
然而,这将再次导致收件人列中的(可能非常大)列表。这迟早会导致问题,因此您最好通过创建一个匹配收件人ID和邮件ID的新表来规范化数据。