论坛
BBS
ASP
PHP
C语言
C++
net
JAVA
MYSQL
MSSQL
登录
|
注册
用户名
Email
自动登录
找回密码
密码
登录
立即注册
积分: 0
设置
道具
勋章
任务
退出
搜索
搜索
本版
文章
帖子
用户
3D网络
>
论坛
›
3D网络
›
MYSQL
返回列表
查看:
80
|
回复:
0
实战演练 | 在 MySQL 中选择除了某一列以外的所有列
[复制链接]
幸运一生
幸运一生
当前离线
积分
12
4
主题
4
帖子
12
积分
新手上路
新手上路, 积分 12, 距离下一级还需 38 积分
新手上路, 积分 12, 距离下一级还需 38 积分
积分
12
发消息
发表于 2023-1-12 15:04:55
|
显示全部楼层
|
阅读模式
SQL 通过
SELECT *
(SELECT ALL)子句使选择表中的所有字段变得非常简单。 不幸的是,一旦您从列表中省略一列,SELECT ALL语句就会消失。 写出每个列的名称很快就会变得乏味,尤其是当您碰巧要处理包含数十个列的表时。 如果我们可以选择除一列之外的每一列怎么办-通过排除而不是包含进行选择? 可以办到。 实际上,有两种方法可以做到这一点-一种简单,另一种则少一些。 这些将是今天博客的重点。
方法1:使用INFORMATION_SCHEMA.COLUMNS表
INFORMATION_SCHEMA提供对数据库元数据的访问,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 更具体地说,COLUMNS表提供有关表中列的信息,包括列名。
The Sakila示例数据库的电影表中包含了最多的列13列。
这是我们使用INFORMATION_SCHEMA.COLUMNS表来获取除
original_language_id
列以外的所有列的方式:
GROUP_CONCAT函数将所有列名称连接为一个逗号分隔的字符串。 然后,我们可以将字段替换为空字符串!
执行查询
要克服的一个小障碍是MySQL查询不能接受动态列名。 解决方案是采用准备好的语句。 这是设置@sql变量,准备语句并执行的代码:
SET @sql = CONCAT('SELECT ',
(SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), &#39;<columns_to_omit>,&#39;, &#39;&#39;)
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = &#39;<table>&#39;
AND TABLE_SCHEMA = &#39;<database>&#39;),
&#39; FROM <table>&#39;);
PREPARE stmt1 FROM @sql;
EXECUTE stmt1;
在查询中插入列,表和模式信息会产生我们想要的结果:
方法2:使用Navicat
Navicat 数据库开发和管理工具的主要目标是提高生产力。 因此,Navicat 旨在使您的工作尽可能快速和轻松。 为此,借助“代码完成”和可自定义的代码段,SQL编辑器可帮助您更快地编写代码,这些代码段可为关键字提供建议并从编码中去除重复项。 而且,如果这还不够的话,Navicat还提供了一个称为“查询创建工具”的有用工具来可视化地构建查询。 它使您仅使用SQL的一点点知识就可以创建和编辑查询。 虽然Query Builder主要销售给更多的新手程序员,但是精通SQL的人仍然可以从Query Builder中受益于某些任务。 这样的任务之一就是选择列。
在查询创建工具中,表名称旁边有一个复选框,用于选择其所有列。 如果单击它,则只需取消选中original_language_id字段即可将其从列列表中删除:
单击确定按钮,然后关闭对话框并将SQL代码添加到编辑器:
与手动编写代码相比,使用查询创建工具创建查询具有一些优势:
减少错别字
生成易于阅读的格式化SQL
保证数据的有效性和完整性
节约时间成本
总结
在今天的博客中,我们学习了两种技术来选择表中的每一列,但只能选择一两个。有兴趣进一步了解 Navicat for MySQL 吗? 您可以免费试用14天,以进行评估!
往期回顾
1. 盗版引发设备瘫痪 | 官方严正声明:切勿在非官方渠道购买或下载 Navicat 软件
2. Navicat 荣获 Microsoft 金牌合作伙伴
3. Navicat 16.3 正式支持 OceanBase 企业版
4. 免费试用 Navicat 16
5. Navicat 发展史
6. SQL 语句中 WHERE 1=1 的作用
7. 在 SQL 中计算总行数的百分比
8. 互动有礼活动进行中 | 奖品为价值 819 元 Navicat Premium
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
net
ASP
C++
PHP
C语言
JAVA
MSSQL
Archiver
手机版
Powered by
Discuz!
X3.4
© 2001-2015
Comsenz Inc.
快速回复
返回顶部
返回列表