失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql查询排除字段_mysql查询表 指定排除字段

mysql查询排除字段_mysql查询表 指定排除字段

时间:2021-02-08 19:04:18

相关推荐

mysql查询排除字段_mysql查询表 指定排除字段

查询user表中除email以外的所有字段

假设数据库bbs中有user表,字段如下

id,username,password,gender,email

-------------------------------------------------------------------------

在命令行窗口输入:

SET @sql =

CONCAT('SELECT ',

(

SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), if(instr(GROUP_CONCAT(COLUMN_NAME),'email,')>0,'email,',',email'), '')

FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='user' AND TABLE_SCHEMA = 'bbs'

),

' FROM user');

PREPARE stmt FROM @sql;

use bbs;

EXECUTE stmt;

---------------------------------------------------------------

解释:

下一步操作都基于上一步操作;

操作1

mysql> use bbs;

SELECT * FROM user;

+----+----------+----------+--------+--------------+

| id | username | password | gender | email |

+----+----------+----------+--------+--------------+

| 1 | jack | 670B1472 | male | jack@ |

操作2

mysql> SELECT COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='user' and TABLE_SCHEMA='bbs';

+-------------+

| column_name |

+-------------+

| id|

| username |

| password |

| gender |

| email |

+-------------+

从 INFORMATION_SCHEMA.COLUMNS 表中查找 数据库名为bbs且表名为user的列信息

操作3

mysql> SELECT GROUP_CONCAT(COLUMN_NAME ) from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='user' and TABLE_SCHEMA='bbs';

+-----------------------------------+

| GROUP_CONCAT(COLUMN_NAME ) |

+-----------------------------------+

| id,username,password,gender,email |

+-----------------------------------+

使用组函数GROUP_CONCAT连接COLUMN_NAME并以逗号作为分割符

操作4

mysql> SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME ),',email', '') from INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='user' and TABLE_SCHEMA='bbs';

+--------------------------------------------------+

| REPLACE(GROUP_CONCAT(COLUMN_NAME ),',email', '') |

+--------------------------------------------------+

| id,username,password,gender |

+--------------------------------------------------+

把字符串"id,username,password,gender,email"中的",email"替换为空串""

操作5

最后将字符串“id,username,password,gender”前后分别拼接 "SELECT " 和 " FROM user"则可以得到结果

注意:因为排除的某个字段可能不是在最后,例如排除“id,username,password,gender,email”中的gender则要替换"gender,"所以要做这样的处理replace(str, if(instr(str, "email,")>0, "email,",",email"))---如果字符串中的列名后有逗号,则把逗号一并替换,否则只替换列名

另外,个人觉得这么处理可读性非常差,建议还是通过程序来实现。使用一些数据库工具库会方便一些,如果是用java可以使用DBUtils这个库

如果觉得《mysql查询排除字段_mysql查询表 指定排除字段》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。