【发布时间】:2019-08-23 13:54:40
【问题描述】:
我在 phpMyAdmin(在服务器中)中有一个 mySQL 表,但在创建和保存新列时遇到问题。
表名是'visage',它存在并且已经有以下变量:
ind1 int(15)
lien1 varchar(2083)
dire text
ind2 ind(15)
lien2 varchar(2083)
delta int(15)
我想添加一个名为“inddir”的新列,其中值将取决于“ind1”和“dire”列中的值,方法是使用 SELECT/CASE/WHEN:
SELECT *,
CASE
WHEN `dire` = 'der' THEN ((ind1*10)+0)
WHEN `dire` = 'izq' THEN ((ind1*10)+1)
WHEN `dire` = 'del' THEN ((ind1*10)+2)
WHEN `dire` = 'atr' THEN ((ind1*10)+3)
WHEN `dire` = 'arr' THEN ((ind1*10)+4)
WHEN `dire` = 'abj' THEN ((ind1*10)+5)
END AS `inddir`
FROM `visage`
此请求无效:
--> 在 phpMyAdmin 中:https://ibb.co/54GpX4N
我直接在代码中获取错误:“Unrecognized keyword.(near AS)”和“Unexpected token.(near inddir)https://ibb.co/1ZZ4rc1
但是,当我不使用“AS indir”时,mySQL 会按照我想要的方式创建一个新列,但名称是完整的查询 --> 我无法保存此列。
--> 在 phpMyAdmin 中:https://ibb.co/PY82Kwq
有人可以告诉我如何按预期创建inddir 列,然后能够将这个新列保存在 mySQL 表中吗?
非常感谢。
【问题讨论】:
-
无法重现。在这里工作得很好:db-fiddle.com/f/gomfd1tHLmApQSW6HAWhvq/0
-
谢谢你,Madhur,但正如我在图片中显示的那样,相同的代码在 phpMyAdmin 中不起作用(ibb.co/54GpX4N 和 ibb.co/1ZZ4rc1),无论如何感谢您抽出宝贵时间尝试。跨度>
标签: mysql phpmyadmin