gpt4 book ai didi

php - 如何在 MYSQL UPDATE 中使用表别名

转载 作者:可可西里 更新时间:2023-11-01 06:49:03 27 4
gpt4 key购买 nike

我必须使用 PHP 的 mysql_query() 函数更新 mysql 表。因此,我只需要在一条语句中发送以下 UPDATE 查询:

SET @i = 0;

UPDATE mytable SET id=(@i:=@i+1);

我已经阅读了一些示例,其中可以使用使用表别名的 SELECT 语句来完成此操作,例如:

SELECT @rn:=@rn+1 AS rank, t1.* FROM (SELECT * FROM mytable) t1, (SELECT @rn:=0) t2

有什么方法可以将这些表别名与我需要使用的 UPDATE 语句一起使用吗?

编辑:

根据 Topher Hunt 的回答,我想我可以使用以下方法创建 mytable 的副本:

创建表 mytable_copy SELECT @rn:=@rn+1 AS id, t1.* FROM (SELECT * FROM mytable) t1, (SELECT @rn:=0) t2

然后 DROP mytable 并将 mytable_copy 重命名为 mytable。

此语句是否会创建 mytable 的精确副本,具有与 mytable 中相同的字段类型和长度?

最佳答案

如果您在表之间使用 JOIN,则 SELECT 和 UPDATE 语句之间的语法非常相似。示例:

SELECT * 
FROM table1 a
JOIN table2 b ON a.something = b.something ## (conditions for linking tables)
JOIN table3 c ON b.something = c.something
WHERE a.something = 'value'

连接 3 个表的 SELECT 语句,只需删除 SELECT 行,将单词 FROM 更改为 UPDATE,并添加一个“SET”子句来说明您想要更改的内容,即可将其转变为 UPDATE 语句。像这样:

UPDATE table1 a
JOIN table2 b ON a.something = b.something ## (conditions for linking tables)
JOIN table3 c ON b.something = c.something
SET a.variable = 'value2',
b.something = 'value3',
c.somethingelse = 'value4'
WHERE a.something = 'value';

如果需要,您可以同时更改多个字段;只需用逗号分隔每个 SET 项目。

关于php - 如何在 MYSQL UPDATE 中使用表别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12802662/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com