我有表消息,我正在尝试向用户创建新消息。算法如下:
1) 获取所有用户的电子邮件(它们充当用户 ID,并且是表 user 中的主键)
2) 对于每封电子邮件插入消息(全部相同),标记已读取 (false) 和时间 (NOW())
如何做到这一点?我写了接下来的内容,但我确信这样的行是错误的。
INSERT INTO `messages` (`email`, `message`,`isread`,`createdat`) SELECT DISTINCT `email` FROM `users`, ?, false, NOW()
附注我通过 PHP 执行此操作,所以?将是消息文本。 对于消息,主键是 id,即 AUTO_INCRMENT。数据库:MySQL
最佳答案
将您的文字值添加到 select 子句中,如下所示。
看看这个 sqlFiddle
INSERT INTO `messages` (`email`, `message`,`isread`,`createdat`)
SELECT DISTINCT `email`, '?', false, NOW()
FROM `users`
同样的事情,但是在 PHP 中
<?php
$myMessage ="...";
$sql = sprintf("
INSERT INTO `messages` (`email`, `message`,`isread`,`createdat`)
SELECT DISTINCT `email`, '%s', false, NOW()
FROM `users`",
$myMessage);
关于php - 如何创建插入表,其中部分数据来自一张表,其余数据已填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20910997/