当我想选择除foo和bar之外的所有列时,我通常只需显式地列出select语句中的所有其他列。select a, b, c, d, ... from ...
但是,如果表有十几列,对于简单的方法来说,这是一个冗长的过程。我想做的是类似于下面的伪语句:select * except(foo, bar) from ...
我还想知道,如果有一个函数可以从包含多个列的结果中筛选出行,如果多个行在所有对应的列中都有相同的内容。换句话说,重复的行将被过滤掉。
------------------------
A | B | C
------------------------ ====> ------------------------
A | B | C A | B | C
------------------------ ------------------------
最佳答案
您可以查询INFORMATION_SCHEMA
db并获取该表的列列表(两列除外),例如:
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/