在 mysql 中选择除一个字段之外的所有字段

2022-08-31 00:53:33

可能的重复:
选择MySQL中除一列之外的所有列?

我想知道有没有办法从数据库中的表中选择除一个字段之外的所有字段。

我知道我可以在选择查询中描述字段名称。
例如:

SELECT fieldname1, fieldname2, fieldname3, fieldname4 FROM tablename;

但我的问题是,有没有办法以简单的方式做到这一点......喜欢这个

SELECT * FROM tablename EXCEPT(fieldname3);

我正在使用MySQL和Zend框架。


答案 1

你可以像那样轻松地做到这一点

假设您的字段是 id = 5

然后

   select * from your_table where id !=5 

如果你的意思是列

假设您不想选择column3

然后

   select column1,column2,column4 from tablename;

如果您有许多列

    SET @sql = CONCAT('SELECT ', (SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME),  '<columns_to_delete>,', '') 
    FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '<table>'   AND TABLE_SCHEMA = '<database>'), ' FROM <table>');

    PREPARE stmt1 FROM @sql;
   EXECUTE stmt1;

答案 2

是的,您可以从中获取information_schema.columns

SET @sql = CONCAT('SELECT ', (SELECT GROUP_CONCAT(COLUMN_NAME) FROM 
information_schema.columns WHERE table_schema = 'dbo' AND table_name = 
'tablename' AND column_name NOT IN ('c1', 'c2')), 
' from dbo.tablename');  

PREPARE stmt1 FROM @sql;

EXECUTE stmt1;

推荐