0

我想更新表中的一行。

UPDATE content SET title = $title, content = $content, email = ???

电子邮件是问题所在,我有来自用户表的电子邮件地址的 ID,但没有地址,我想插入地址。

如何在同一个 UPDATE 查询中从 users 表中获取电子邮件地址?

用户:

id|email
 1 johnsmith@gmail.com

这是我的查询如何查找插入:

INSERT INTO content (title, content, email) SELECT $title, $content, email FROM users WHERE id = $id.

请注意,我知道 vars 需要转义/安全等,上面发布了一个清晰的例子。

4

3 回答 3

3

像这样简单地使用,

UPDATE content SET title = $title, content = $content,
email = (SELECT email FROM users WHERE id = $id)
于 2013-05-30T09:45:50.440 回答
2

为什么要复制内容表中的数据?只需使用连接来获取显示的电子邮件地址:

SELECT c.title, c.content, c.author, u.email 
FROM content c 
LEFT JOIN users u 
    ON c.author = u.id 
WHERE c.id = 1
于 2013-05-30T09:47:00.817 回答
1

您如何知道要使用哪些用户记录?

假设您在内容表中有一个 user_id 字段,那么您可以在 UPDATE 上执行 JOIN

UPDATE content INNER JOIN users ON content.user_id = users.id 
SET content.title = $title, 
content.content = $content,
content.email = users.email
于 2013-05-30T09:51:01.737 回答