mysql选取除某一列的所有行_在 MySQL 中选择除了某一列以外的所有列

在 MySQL 中选择除了某一列以外的所有列

2020 年 1 月 23 日,由 Robert Gravelle 撰写

SQL通过SELECT *(SELECT ALL)子句使选择表中的所有字段变得非常简单。 不幸的是,一旦您从列表中省略一列,SELECT ALL语句就会消失。 写出每个列的名称很快就会变得乏味,尤其是当您碰巧要处理包含数十个列的表时。 如果我们可以选择除一列之外的每一列怎么办-通过排除而不是包含进行选择? 可以办到。 实际上,有两种方法可以做到这一点-一种简单,另一种则少一些。 这些将是今天博客的重点。

方法1:使用INFORMATION_SCHEMA.COLUMNS表

INFORMATION_SCHEMA提供对数据库元数据的访问,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 更具体地说,COLUMNS表提供有关表中列的信息,包括列名。

The Sakila示例数据库的电影表中包含了最多的列13列。

58118252da529a886478f4c2c4c7b04b.png

这是我们使用INFORMATION_SCHEMA.COLUMNS表来获取除original_language_id列以外的所有列的方式:

ecba3ad4dd3556cdb2a692a6b399af09.png

GROUP_CONCAT函数将所有列名称连接为一个逗号分隔的字符串。 然后,我们可以将字段替换为空字符串!

执行查询

要克服的一个小障碍是MySQL查询不能接受动态列名。 解决方案是采用准备好的语句。 这是设置@sql变量,准备语句并执行的代码:

SET @sql = CONCAT('SELECT ',

(SELECT REPLACE(GROUP_CONCAT(COLUMN_NAME), ',', '')

FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '

AND TABLE_SCHEMA = ''),

' FROM

PREPARE stmt1 FROM @sql;

EXECUTE stmt1;

在查询中插入列,表和模式信息会产生我们想要的结果:

833182a6a5288e966822dacff7881609.png

方法2:使用Navicat

Navicat等数据库开发和管理工具的主要目标是提高生产力。 因此,Navicat旨在使您的工作尽可能快速和轻松。 为此,借助“代码完成”和可自定义的代码段,SQL编辑器可帮助您更快地编写代码,这些代码段可为关键字提供建议并从编码中去除重复项。 而且,如果这还不够的话,Navicat还提供了一个称为“查询创建工具”的有用工具来可视化地构建查询。 它使您仅使用SQL的一点点知识就可以创建和编辑查询。 虽然Query Builder主要销售给更多的新手程序员,但是精通SQL的人仍然可以从Query Builder中受益于某些任务。 这样的任务之一就是选择列。

在查询创建工具中,表名称旁边有一个复选框,用于选择其所有列。 如果单击它,则只需取消选中original_language_id字段即可将其从列列表中删除:

51f73d8e542dbaf4d3756770266216a7.png

单击确定按钮,然后关闭对话框并将SQL代码添加到编辑器:

a5fae6c2132d2ed52a2c9ee07c3c4bc9.png

与手动编写代码相比,使用查询创建工具创建查询具有一些优势:

减少错别字

生成易于阅读的格式化SQL

总结

在今天的博客中,我们学习了两种技术来选择表中的每一列,但只能选择一两个。

有兴趣进一步了解Navicat for MySQL吗? 您可以免费试用14天,以进行评估!

好的,我明白你的问题了。针对你的问题,我来解释一下。 首先,TF-IDF(Term Frequency-Inverse Document Frequency)是一种用于信息检索的常见加权技术。它根据某个词(term)在文档出现的频率(Term Frequency,指某个词在文档出现次数除以文档总词数)和在整个文档集合出现的频率(Inverse Document Frequency,指在所有文档都出现过的词语(停用词)可以过滤掉)来计算一个词的重要性。 对于你的问题,如果要对 MySQL 存储的某 TF-IDF 算法并得出每一的结果,可以按照以下步骤进: 1. 首先,需要将 MySQL 的数据导出到本地或者云端的一台服务器上进处理。可以使用 MySQL 的命令工具或者 GUI 工具进导出,或者使用一些第三方库进数据导出。 2. 接下来,需要对导出的数据进清洗和预处理。例如,去除停用词、分词、去除特殊字符等等预处理步骤。 3. 然后,对每数据进 TF-IDF 计算。可以使用 Python 的第三方库(如 scikit-learn)实现。 以下是一个示例代码,假设数据已经导出并放在 data.csv 文件,需要对名为 content 的 TF-IDF 计算: ```python import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer # 读取数据 data = pd.read_csv('data.csv') # 选取需要计算 TF-IDF 的 content = data['content'] # 创建 TfidfVectorizer 对象进计算 vectorizer = TfidfVectorizer(stop_words='english') # 计算 TF-IDF tfidf = vectorizer.fit_transform(content) # 打印每的结果 for i in range(len(content)): print(f"Row {i}:") print(tfidf[i]) ``` 需要注意的是,TF-IDF 计算结果的形式与输入的内容形式不同。在上述代码,每一的 TF-IDF 计算结果 tfidf[i] 是一个矩阵,它表示输入文本每个词的重要性,可以进一步处理后使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值