如何在 MySQL 中的 SELECT 期间使用 CONCAT 作为列名?
How can I use CONCAT during SELECT in MySQL as a column name?
谁能告诉我如何在 SELECT
期间使用 CONCAT
的结果作为列名?我的尝试是这样的:
INSERT INTO `table_1` (datum, comment)
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
FROM `table_2`
WHERE id = 12345
因此,我在评论栏中得到 s0
- s6
作为值,而不是我想要读取的第二个 table 中的实际值来自:/
funfact:如果我只输入 s0
(例如,适用于所有 7 个)而不是 CONCAT
,它工作得很好,我得到了我想要的实际值.
感谢您的帮助。
你可以这样使用
INSERT INTO `table_1` (datum, comment)
SELECT CURRENT_DATE(),
CASE DAYOFWEEK(CURRENT_DATE())-1
WHEN 0 THEN s0
WHEN 1 THEN s1
WHEN 2 THEN s2
WHEN 3 THEN s3
WHEN 4 THEN s4
WHEN 5 THEN s5
WHEN 6 THEN s6
END
FROM `table_2` WHERE id = 12345
好吧,我必须承认我花了一段时间才明白你在问什么。 Table2 有 7 列 s0 到 s6,您想要从与日期匹配的列中获取值。是吗?
所以,当然使用
SELECT CURRENT_DATE(), s2
为您提供 s2 的内容,而
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
给你's2'。如果没有那将是可怕的。您真的希望 DBMS 计算一个值,然后检查该值是否恰好与列名匹配吗?然后
select name, job from person;
在大多数情况下,会 select 此人的姓名和工作,但对于名为 Job 的人,您会得到两次工作。你看这不能不如愿吧?
因此请检查您的表达式结果并从相应的列中读取:
insert into table_1 (datum, comment)
select
current_date(),
case dayofweek(current_date()) - 1
when 0 then s0
when 1 then s1
when 2 then s2
when 3 then s3
when 4 then s4
when 5 then s5
when 6 then s6
end
from table_2 where id = 12345;
谁能告诉我如何在 SELECT
期间使用 CONCAT
的结果作为列名?我的尝试是这样的:
INSERT INTO `table_1` (datum, comment)
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
FROM `table_2`
WHERE id = 12345
因此,我在评论栏中得到 s0
- s6
作为值,而不是我想要读取的第二个 table 中的实际值来自:/
funfact:如果我只输入 s0
(例如,适用于所有 7 个)而不是 CONCAT
,它工作得很好,我得到了我想要的实际值.
感谢您的帮助。
你可以这样使用
INSERT INTO `table_1` (datum, comment)
SELECT CURRENT_DATE(),
CASE DAYOFWEEK(CURRENT_DATE())-1
WHEN 0 THEN s0
WHEN 1 THEN s1
WHEN 2 THEN s2
WHEN 3 THEN s3
WHEN 4 THEN s4
WHEN 5 THEN s5
WHEN 6 THEN s6
END
FROM `table_2` WHERE id = 12345
好吧,我必须承认我花了一段时间才明白你在问什么。 Table2 有 7 列 s0 到 s6,您想要从与日期匹配的列中获取值。是吗?
所以,当然使用
SELECT CURRENT_DATE(), s2
为您提供 s2 的内容,而
SELECT CURRENT_DATE(), CONCAT('s',DAYOFWEEK(CURRENT_DATE())-1)
给你's2'。如果没有那将是可怕的。您真的希望 DBMS 计算一个值,然后检查该值是否恰好与列名匹配吗?然后
select name, job from person;
在大多数情况下,会 select 此人的姓名和工作,但对于名为 Job 的人,您会得到两次工作。你看这不能不如愿吧?
因此请检查您的表达式结果并从相应的列中读取:
insert into table_1 (datum, comment)
select
current_date(),
case dayofweek(current_date()) - 1
when 0 then s0
when 1 then s1
when 2 then s2
when 3 then s3
when 4 then s4
when 5 then s5
when 6 then s6
end
from table_2 where id = 12345;