我的桌子上有很多列。其中一些是DATETIME,我将其转换为Unix时间戳UNIX_TIMESTAMP()。因此,我不必从表中键入我想要的所有其他列,是否可以执行以下操作:
SELECT UNIX_TIMESTAMP(t.start) AS start,
UNIX_TIMESTAMP(t.end) AS end,
t.theOtherColumns
FROM table t
Run Code Online (Sandbox Code Playgroud)
t.theOtherColumns表格中其余的列在哪里。进一步解释;我想从表中选择所有列,对其中的某些列执行操作,但不要在查询中键入每个列的名称。
当我说时
SELECT UNIX_TIMESTAMP(t.start) AS start,
UNIX_TIMESTAMP(t.end) AS end,
t.theOtherColumns
FROM table t
Run Code Online (Sandbox Code Playgroud)
它选择start和end的两倍。我只想从中返回start和end列UNIX_TIMESTAMP(),并从t.*集合中排除这些列。
您可以使用此答案来帮助构建所需的结果。
一个可能的解决方案看起来像
SET @sql = CONCAT('SELECT UNIX_TIMESTAMP(t.start) AS start, UNIX_TIMESTAMP(t.end) as end,', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM
information_schema.columns WHERE table_schema = 'test' AND table_name =
't' AND column_name NOT IN ('start', 'end')),
' from test.t');
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
Run Code Online (Sandbox Code Playgroud)
*将测试替换为包含表t的架构的名称。
我不相信有办法按照你的建议做到这一点,但你可以这样做
SELECT t.*, UNIX_TIMESTAMP(t.start) AS start, UNIX_TIMESTAMP(t.end) as end ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4261 次 |
| 最近记录: |