mysql - 如何在案例条件mysql上定义别名

标签 mysql sql sql-insert

我试图通过更改值将我的一列移动到另一列,但由于列名不匹配(一个是 role_id,另一个是 challenge_id),我尝试创建一个别名 as role_id 它不工作。 是我当前的查询。

我试着做

INSERT into role_user (role_id, user_id) 
            SELECT CASE 
                WHEN challenge_id=2 Then 6
                When challenge_id=3 then 7
                when challenge_id=4 then 8 
                when challenge_id=1 then 9
                END
                challenge_id as role_id , user_id
                FROM challenge_user

最佳答案

你在“END”和“AS”之间有一个多余的“challenge id”:

INSERT into role_user (role_id, user_id) 
            SELECT CASE 
                WHEN challenge_id=2 Then 6
                When challenge_id=3 then 7
                when challenge_id=4 then 8 
                when challenge_id=1 then 9
                END
                AS role_id,  -- Here!
                user_id
                FROM challenge_user

此外,由于您实际上并没有将此别名用于任何事情(只是将其直接插入到另一个表中),因此您可以完全删除它:

INSERT into role_user (role_id, user_id) 
            SELECT CASE 
                WHEN challenge_id=2 Then 6
                When challenge_id=3 then 7
                when challenge_id=4 then 8 
                when challenge_id=1 then 9
                END,
                user_id
                FROM challenge_user

关于mysql - 如何在案例条件mysql上定义别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41093469/

相关文章:

mysql - 来自容器外部的 MySQL 内部错误

sql - 两个缓冲区的区别

mysql - 用于更新的内部 Sql 不工作 Mysql 5.6

mysql - 在 Mysql 中插入日期和时间作为 unix_timestamp

java - 使用 jOOQ 和 PostgreSQL serial 和 RETURNING 返回一个值

php - 要从查询列表中删除的 Mysql 连接类型

php - 将表单中的日期/时间与数据库中的日期/时间进行比较

mysql - 实时统计 : MySQL(/Drizzle) or MongoDB?

mysql - 我怎样才能选择一些行,比如 "get as many rows as possible in 5 seconds"?

javascript - 使用 Javascript 动态创建表以显示数据库 SELECT 查询输出