【发布时间】:2021-11-28 13:14:13
【问题描述】:
我正在使用 MySQL 并尝试将 CONCAT_WS() 函数与 SELECT 一起使用。
我试过了:
SELECT id, A_12, CONCAT_WS('A_', '12') as testA from TABLE_A
我期待类似的东西
id | A_12 | testA |
-------------------
1 | 20 | 20 |
testA 的值应与A_12 中的值相同。
然而,我得到的是
id | A_12 | testA |
-------------------
1 | 20 | 12 |
testA 列中的“12”只是来自 CONCAT_WS() 函数 CONCAT_WS('A_','12') 的后一个字符串。
任何帮助将不胜感激。
======编辑======:
抱歉,我一开始没有明确说明我的问题和目的。我在TABLE_A 中有 12 列 A_1, A_2, ... , A_12。更具体地说,Table_A 看起来像这样:
id | A_1 | A_2 | ... | A_12|
---------------------------
1 | 4 | 5 | ... | 20 |
2 | 1 | 4 | ... | 50 |
3 | 2 | 5 | ... | 70 |
我还有另一张桌子 TABLE_B,看起来像这样:
id | value
----------
1 | 12
2 | 5
3 | 3
我正在尝试创建一个存储函数...
- 从
TABLE_B中选择对应的value - 来自
TABLE_A,拉取A_列下的信息+来自Table_B的值
对于每个id。
所以我有
SELECT id, CONCAT_WS('A_', stored-value-from-TABLE_B) as testA from TABLE_A
为了确保代码是否按预期运行,我运行了
SELECT id, A_12, CONCAT_WS('A_', '12') as testA from TABLE_A
因为Table_B 中id=1 的值是12。
但是,我得到的是每个id 的testA 列中的12。
【问题讨论】:
-
你为什么期待 20?你想做什么?
-
不能在sql中动态引用数据库对象。你必须用脚本语言(或存储过程)动态生成你的 sql 语句,然后执行它来做你想做的事情。
-
为什么不在列名上使用你想要的别名
select A_12, A_12 as testA