当我想选择除foo和bar之外的所有列时,我通常只需显式地列出select语句中的所有其他列。
select a, b, c, d, ... from ...
但是,如果表有十几列,对于简单的方法来说,这是一个冗长的过程。我想做的是类似于下面的伪语句:
select * except(foo, bar) from ...
我还想知道,如果有一个函数可以从包含多个列的结果中筛选出行,如果多个行在所有对应的列中都有相同的内容。换句话说,重复的行将被过滤掉。

------------------------
A     | B      | C
------------------------    ====>    ------------------------
A     | B      | C                   A      | B      | C
------------------------             ------------------------

最佳答案

您可以查询INFORMATION_SCHEMAdb并获取该表的列列表(两列除外),例如:

SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), '<foo,bar>,', '')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<your_table>' AND TABLE_SCHEMA = '<database>';

一旦得到列列表,就可以在select查询中使用它。

关于mysql - 是否可以在SQL中反转select语句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40171743/

10-11 01:35
查看更多