mysql (copy) insert into from select 并添加一个别名列

标签 mysql

我有两张 table

测试表:

id   data_text
1    *some text*

撤消测试表:

id   data_text    modification_date

.

CREATE TRIGGER undo_trigger BEFORE UPDATE 
ON test_table
FOR EACH ROW 

INSERT INTO undo_test_table SELECT *,NOW() AS modification_date
FROM test_table 
WHERE id = NEW.id

我尝试的是,如果修改了第一个表中的一列,则触发触发器 (undo_trigger) 并将整行复制到另一个表 (undo_test_table)

但是在第二个表(undo_test_table)中我还有一列(modification_date)

问题:

上面的例子运行良好但是我不知道如果我将 (modification_date) 列更改为第一个位置而不是 (undo_test_table) 中的最后一个位置,我不知道如何让它工作 像这样:

撤消测试表:

modification_date   id   data_text  

我试过了:

SELECT NOW() AS modification_date,* FROM test_table ...

代替

SELECT *,NOW() AS modification_date FROM test_table ...

但是有语法错误。

我想我需要一些类似 UNION 的东西,但我不知道如何在一个 UNION 中使用 NOW() AS modification_date

最佳答案

您需要使用表名限定 *:

SELECT NOW() AS modification_date, t.* 
-- Here ---------------------------^
FROM   test_table
-- etc...

关于mysql (copy) insert into from select 并添加一个别名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44079450/

相关文章:

MySQL 准备 -> 字段列表中的未知列

php - 按小时对时间值进行分组

mysql - django 查询中混合注释和聚合

php - MySQL大于日期返回小于给定日期的日期

php - 将 mySQL 与 Android 连接

php - 从一个表中选择匹配值到另一个表中的多个值

php - 根据用户检查复选框从数据库检索数据并显示在谷歌图表中

php - 如何使用 PHP 和 MySQL 在搜索中显示 "No results"?

Mysql查询以查找每个用户的最后登录日期

java - MYSql 存储过程,日期时间值不起作用