Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择特定列以及其他列_Mysql - Fatal编程技术网

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-如果这是一个重复的需要,当然可以创建一个
视图
。或者,您可以使用任何用于获取数据的编程语言在服务器端删除这些额外的值。有一种方法可以做到这一点。