`
feipigzi
  • 浏览: 111380 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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@163.com |

 

 

操作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单表查询练习知识点详解 #### 1. 查看EMP表中部门号为5的员工的姓名,职位,参加工作时间,工资。 - **知识点**:基础的`SELECT`语句结合`...通过这些练习题,你可以更好地掌握MySQL查询的基础语法和技巧。

    mysql SELECT语句去除某个字段的重复信息

    通过上述SQL语句,我们可以有效地去除数据库表中某个字段的重复信息,并按指定字段排序。这种方法不仅适用于简单的数据管理场景,也适用于复杂的数据处理任务。在实际应用中,还需要根据具体情况选择合适的查询策略...

    MySQL大表中重复字段的高效率查询方法

    在MySQL数据库管理中,处理大数据表的重复字段查询是一个常见的挑战。当表的数据量非常大时,传统的查询方法可能会导致性能下降,甚至无法在可接受的时间内完成。本篇文章将探讨如何高效地查询大表中的重复字段,并...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    MySQL查询指定字段不是数字与逗号的sql

    例如,如果我们有一个名为`test`的表,其中有一个字段`name`,我们可以使用以下查询来找出所有`name`字段不包含数字的记录: ```sql SELECT * FROM test WHERE `name` REGEXP '[^0-9]'; ``` 这里的`[^0-9]`正则...

    MySQL 查询某个字段不重复的所有记录

    在MySQL数据库中,查询某个字段不重复的所有记录是一项常见的需求,尤其在数据清洗和数据分析时。标题中的问题涉及到了如何从包含多条记录的数据表中提取唯一且不重复的特定字段值,例如在这个例子中是`title`字段。...

    【表119,,促销计划执行表】 mysql 多表查询 执行计划.doc

    在MySQL数据库管理中,多表查询是处理复杂数据关系的核心技术。当数据分布在多个相关联的表中时,为了获取全面的信息,我们需要联合这些表进行查询。本篇将重点讨论如何利用MySQL进行多表查询以及执行计划的选择。 ...

    mysql数据库故障排除方案.docx

    MySQL 数据库故障排除的常见方法和解决方案,涵盖了慢查询日志分析、查询数据库总大小、主从复制、查询 MySQL 进程、查看 MySQL 锁或者死锁、Out of memory 错误、字符集创建数据库、权限控制、备份 MySQL 数据库、...

    MYSQL查询分析器

    **MySQL查询分析器** MySQL查询分析器是一种专为MySQL数据库设计的强大工具,它极大地提升了数据库管理、查询和分析的效率。相较于微软的SQL Server查询分析器,MySQL查询分析器更智能,更适合对MySQL数据库进行...

    thinkphp多表查询两表有重复相同字段的完美解决方法

    在使用PHP框架ThinkPHP进行多表查询时,经常会遇到一个问题:当两个或多个表中有重复的字段名,这会导致查询结果中的字段混淆,不易区分来自哪个表的数据。为了解决这个问题,我们可以采取一种方法,即在查询语句中...

    mysql 数据表中查找重复记录

    2. `FROM user_table`: 指定要从中查询的表是`user_table`。 3. `GROUP BY user_name`: 将结果集按照`user_name`字段进行分组。这意味着相同`user_name`的记录将被放在一起。 4. `HAVING count > 1`: 这是条件过滤,...

    MySql 5.1 参考手册.chm

    5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...

    MySQL 5.1中文手冊

    5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...

    mysql数据库故障排除方案.pdf

    本文档主要介绍了 MySQL 数据库故障排除方案,涵盖了数据库连接数、慢查询日志、数据库总大小、Top 10 大表、主从复制、MySQL 进程和锁死锁等多个方面的知识点。 第一部分:连接数 * 使用 `mysql> status;` 或 `...

    用SQL语句表与字段的基本操作、数据库备份等

    在本篇内容中,我们将深入探讨如何使用SQL进行表和字段的基本操作,包括添加、删除和修改字段,以及数据库对象的重命名和查询。这些操作对于数据库管理、数据分析以及开发人员来说至关重要。 1. **添加字段**: 要...

    MySQL 5.1官方简体中文参考手册

    5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...

    MySQL 5.1参考手册

    5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...

    MySQL 5.1参考手册 (中文版)

    5.13. MySQL查询高速缓冲 5.13.1. 查询高速缓冲如何工作 5.13.2. 查询高速缓冲SELECT选项 5.13.3. 查询高速缓冲配置 5.13.4. 查询高速缓冲状态和维护 6. MySQL中的复制 6.1. 复制介绍 6.2. 复制实施概述 6.3. 复制...

Global site tag (gtag.js) - Google Analytics