Mysql 选择特定列以及其他列
我有一个有很多列的表。其中一些是Mysql 选择特定列以及其他列,mysql,Mysql,我有一个有很多列的表。其中一些是DATETIME,我使用Unix\u TIMESTAMP()将其转换为Unix时间戳。因此,我不必从表中键入我想要的所有其他列,是否有一种方法可以执行以下操作: SELECT UNIX_TIMESTAMP(t.start) AS start, UNIX_TIMESTAMP(t.end) AS end, t.theOtherColumns FROM table t 其中,t。其他列是表中的其余列。进一步解释;我想从表中选择所有列,对其中
DATETIME
,我使用Unix\u TIMESTAMP()
将其转换为Unix时间戳。因此,我不必从表中键入我想要的所有其他列,是否有一种方法可以执行以下操作:
SELECT UNIX_TIMESTAMP(t.start) AS start,
UNIX_TIMESTAMP(t.end) AS end,
t.theOtherColumns
FROM table t
其中,t。其他列
是表中的其余列。进一步解释;我想从表中选择所有列,对其中一些列执行操作,但不想在查询中键入每个列名
当我这样做的时候
SELECT UNIX_TIMESTAMP(t.start) AS start,
UNIX_TIMESTAMP(t.end) AS end,
t.theOtherColumns
FROM table t
它选择两次
start
和end
。我只想从UNIX\u TIMESTAMP()
返回start
和end
列,并从t.*
集中排除这些列。我不相信有办法按照您的建议执行此操作,但您可以这样做
SELECT t.*, UNIX_TIMESTAMP(t.start) AS start, UNIX_TIMESTAMP(t.end) as end ...
试试t.*它在Oracle下工作。您可以使用它来帮助生成所需的结果 一个可能的解决方案是
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;
*将test替换为包含表t的模式的名称。@Zoltan-但这也将返回
t、start
和t.end
。这个问题的答案是“不”,我明白了。我不认为这是可能的…好的,谢谢你。不过值得一提。@Jam-如果这是一个重复的需要,当然可以创建一个视图。或者,您可以使用任何用于获取数据的编程语言在服务器端删除这些额外的值。有一种方法可以做到这一点。