在MySQL / phpmyadmin中创建新列时出现问题

时间:2019-08-23 13:54:40

标签: mysql phpmyadmin

我在phpMyAdmin中有一个mySQL表(在服务器中),并且在创建和保存新列时遇到问题。

表名称为'visage',它存在并且已经具有以下变量:

ind1    int(15)
lien1   varchar(2083)
dire    text
ind2    ind(15)
lien2   varchar(2083)
delta   int(15)

我想通过使用SELECT / CASE / WHEN添加一个名为'inddir'的新列,其中值将取决于'ind1'和'dire'列中的值:


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

我直接在代码中获得错误:“无法识别的关键字。(在AS附近)”和“意外令牌。(在inddir附近)https://ibb.co/1ZZ4rc1

但是,当我不使用“ AS indir”时,mySQL会按照我想要的方式创建一个新列,但是其名称是完整的查询->并且我无法保存此列列。

->在phpMyAdmin中:https://ibb.co/PY82Kwq

有人可以告诉我如何按预期方式创建inddir列,然后将其保存在mySQL表中吗?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

我使用heidiSQL,它可以和我一起工作。您可以同时在以下版本中使用和不使用“ AS”关键字进行尝试吗?

SELECT *,
case
    when `currency` = 'USD' then 7
    when `currency` = 'EUR' then 8
    when `currency` = 'JPY' then 9
END as `newcolum`
FROM accounts;

SELECT *,
case
    when `currency` = 'USD' then 7
    when `currency` = 'EUR' then 8
    when `currency` = 'JPY' then 9
END 
FROM accounts;