首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >一个表上的多个SQL查询

一个表上的多个SQL查询
EN

Stack Overflow用户
提问于 2012-12-16 14:34:44
回答 1查看 272关注 0票数 0

我用的是灯。在MySql中,我有一个列X、Y和Z的表。我需要从多个集合和子集中选择不同的记录。如果我最初的标准是Y=A,那么我需要能够:

  • 通过选择Y= A的记录来设置B
  • 通过选择X在集合B和Z= 123中的记录来获得集合C
  • 通过选择Y位于集合B且Z= 456的记录来获得集合D
  • 通过选择X位于集合D且Z= 789的记录来获得集合E

这张桌子可能会变大,我不知道从哪里开始。一些可能的办法是:

  1. 有多个单独的查询。在这种情况下,如何将结果集从一个查询缓存为另一个查询的输入?梅卡奇?
  2. 使用嵌套子查询。但是内部查询的结果纯粹是为了限制外部查询,不是吗?我怎样才能让他们出现在结果中?
  3. 使用联合。但是如何将一个查询的结果存储为另一个查询的输入呢?
  4. 多次将表连接到它自己。这将产生一个笛卡尔结果,其中外层行被重复多次。这将映射到一个多维PHP数组,这个数组应该是可管理的。但是表演呢?

我倾向于第四种选择,但不是百分之百肯定。我在重新发明方向盘吗?

非常感谢..。

EN

回答 1

Stack Overflow用户

发布于 2012-12-16 17:29:38

我不明白你的目标,因为你还没有定义对X的限制,但是从你的描述来看,我相信集合E是空的。我这么说是因为集合D已经包含Z为456的行。因此,当您在该结果集上运行另一个查询以为Z为789的条件生成E时,您将不会得到任何行,因为D中的所有行都是456。

现在谈一谈个人意见:

  1. 尽可能避免笛卡尔产品
  2. 如果需要,可以对表进行去denormalize,以提高查询效率
  3. 生成尽可能最小的结果集以满足您的需求的查询。
  4. 如果可能的话,使用子查询减少结果集的大小。
  5. 信任查询优化器,以便尽可能避免子查询
  6. 使SQL尽可能地执行这项工作,因为它具有以最优方式计算数据的能力和资源。

为了突出上面的第4项,我想提到,在D的示例中,您可以编写以下查询,而不需要子查询或任何其他临时存储:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM MyTable WHERE Y = A AND Z = 456

现在,也许我可以通过猜测你想要的东西来解决你的困境:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM MyTable WHERE Y = A AND Z IN (123, 456, 789)

或者:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM MyTable WHERE Y = A AND (Z = 123 OR Z = 456 OR Z = 789)

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13906154

复制
相关文章
SQL的单表查询
create database mydb1; Create database mydb2 character set gbk; Create database mydb3 character set gbk COLLATE gbk_chinese_ci;
全栈程序员站长
2021/07/22
2.2K0
SQL嵌套查询_sql嵌套查询返回多个字段
说到嵌套查询,首先得理解嵌套查询是什么意思,简单来说就是,一个查询语句可以嵌套在另外一个查询语句的where子句中。外层的查询称为父查询(主查询),内层的查询称为子查询(从查询)。
全栈程序员站长
2022/09/22
2.9K0
sql嵌套查询效率_sql嵌套查询返回多个字段
为了查询一个字段,使用了五层嵌套循环,但是花费了约1分钟 但是5个表的数据每个最多只有10条,怎么会这么慢呢?
全栈程序员站长
2022/09/22
2.8K0
sql嵌套查询效率_sql嵌套查询返回多个字段
mybatis多条件查询sql_sql模糊查询多个条件
步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:在前一步的基础上进行步骤4:模糊查询步骤5:多条件查询
全栈程序员站长
2022/10/03
3.4K0
mybatis多条件查询sql_sql模糊查询多个条件
SQL三表连接查询
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/135565.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/18
2.1K0
SQL之单表查询
附上下面要用到的数据库和表的 SQL 语句,在数据库管理页面新建一个查询然后使用 CV 大法转移过去执行即可:
wsuo
2020/07/30
1.8K0
sql多层嵌套查询优化_sql嵌套查询返回多个字段
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/169405.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/22
2.5K0
sql多层嵌套查询优化_sql嵌套查询返回多个字段
sql server 连接查询_连表查询语句
连接查询包括合并、内连接、外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要。
全栈程序员站长
2022/10/05
3.4K0
SQL数据查询之——单表查询
数据查询是数据库的核心操作。SQL提供了SELECT语句进行数据查询,其一般格式为:
Twcat_tree
2022/11/30
1.7K0
SQL数据查询之——单表查询
一、SQL数据查询的一般格式 数据查询是数据库的核心操作。SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,<目标列表达式>]··· FROM<表名或视图名>[,<表名或视图名>···] | (SELECT语句>)[AS]<别名> [WHERE<条件表达式>] [GROUP BY<列名1>[HAVING<条件表达式>]] [ORDER BY<列名2>[ASC | DESC]]; 整个SELECT语句的含义是,根据WHERE子句的条件表
Zoctopus
2018/06/04
1.8K0
Flink:动态表上的连续查询
越来越多的公司在采用流处理技术,并将现有的批处理应用程序迁移到流处理或者为新的应用设计流处理方案。其中许多应用程序专注于分析流数据。分析的数据流来源广泛,如数据库交易,点击,传感器测量或物联网设备。
Spark学习技巧
2018/08/01
2.9K0
Flink:动态表上的连续查询
Oracle查询优化-03操作多个表
要将来自多个表的数据组织到一起,就像将一个结果集叠加到另外一个上面一样。 这些表不必有相同的关键字,但是他们对应列的数据类型必须相同。
小小工匠
2021/08/16
3.2K0
【T-SQL基础】01.单表查询-几道sql查询题
概述: 本系列【T-SQL基础】主要是针对T-SQL基础的总结。 本篇主要总结了常见的对单表查询的SQL查询题目。 首先我们必须了解SQL查询的各字句在逻辑上按以下顺序进行处理: 1.FROM 2.W
悟空聊架构
2018/05/18
2K0
sql学习笔记(三)—— 联表查询
既然是联表查询,那肯定得多个表啊,所以,我们先创建一个教师表,表名为 teacher,并且向表中插入数据。
CherishTheYouth
2019/09/11
1.1K0
sql学习笔记(三)—— 联表查询
mongodb与sql在查询上的区别
之前在“这个场景更适合使用NoSQL”文章中通过和SQL的对比 介绍了NOSQL数据存储结构的特点,一位朋友看后希望再介绍下NOSQL查询方面的特点 这里以NOSQL中比较典型的mongodb数据库为例,先从用法上看下mongodb的操作方式,以后会更深入的介绍mongodb查询方面的细节 下面从3个方面看下mongodb的查询方式 (1)简单查询 类似于sql的 select * from table; (2)条件查询 类似于sql的 select * from table where
dys
2018/04/02
2K0
linq to sql的多条件动态查询(上)
linq  to sql的多条件动态查询确实是一件头痛的事情,用表达式树或反射方法要写一大堆代码,有时候想想与其这么复杂,还不如回到手动sql拼接的年代,但是技术总是向前发展的,终归还是要在linq上解决这一问题,无意在网上发现一个还算比较简单的办法,分享一下: void ShowData() { using (DBDataContext db = new DBDataContext(Database.ConnectionString)) {
菩提树下的杨过
2018/01/24
2.5K0
SQL92&SQL99实现三表联合查询
–给city表添加测试数据 insert into city values(1,‘商丘’,‘历史闻名古都’); insert into city values(2,‘邯郸’,‘历史闻名古都’); insert into city values(3,‘洛阳’,‘历史闻名古都’); insert into city values(4,‘开封’,‘历史闻名古都’); –将部门表中的loc字段设置为城市表的城市编号 update dept set loc=‘1’ where deptno=50; update dept set loc=‘2’ where deptno=40; update dept set loc=‘3’ where deptno=30; update dept set loc=‘4’ where deptno=20; update dept set loc=‘4’ where deptno=10; –完成三表联合查询 –SQL92实现:查询员工信息及部门名称及所在城市名称并且员工的工资大于2000或者有奖金 –特点:易于书写,难于阅读 –缺点:92的SQL语句结构不清晰 –用法: –select 内容 (别名,连接符,去除重复,oracle函数,逻辑运算) –from 表名1,表名2,表名3… –where 条件(连接条件,普通筛选条件,where子句关键字) –group by 分组字段 –having 多行函数筛选 –order by 排序字段 select e.*,d.dname,c.cname from emp e,dept d,city c where (e.deptno=d.deptno and d.loc=c.cid and sal>2000) or (e.deptno=d.deptno and d.loc=c.cid and comm is not null) order by e.sal –SQL99实现:查询员工信息及部门名称及所在城市名称并且员工的工资大于2000或者有奖金 –特点:难于书写,易于阅读 –使用: –select 内容 from 表名1 – inner join 表名2 – on 连接条件 –inner join 表名3 –on 连接条件 –where 普通筛选条件 –group by 分组 –having 多行函数筛选 –order by 排序 select * from emp e inner join dept d on e.deptno = d.deptno inner join city c on d.loc =c.cid where e.sal>2000 or e.comm is not null order by e.sal
葆宁
2019/04/19
1.2K0
SQL92&SQL99实现三表联合查询
MySQL 查询一个表的大小
SELECT @mb := round((sum(DATA_LENGTH) + sum(INDEX_LENGTH)) / (1024 * 1024), 2), concat(@mb, 'MB') FROM information_schema.tables WHERE table_schema = 'sotu';
一个会写诗的程序员
2018/08/17
1.5K0
如何编写更好的SQL查询:终极指南(上)
结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的。对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的。这个教程将会提供给你一些步骤,来评估你的查询语句。 首先,应该了解学习SQL对于数据挖掘分析这个工作的重要性; 接下来,应该先学习SQL查询语句的处理和执行过程,以便可以更好的了解到,编写高质量的查询有多重要。具体说来就是,应该了解查询是如何被解析、重写、优化和最终评估的; 掌握了上面一点之后,你不仅需要重温初学
数据和云
2018/03/08
2.3K0
如何编写更好的SQL查询:终极指南(上)
谈谈SQL查询中回表对性能的影响
业务需要,LIKE 的时候必须使用模糊查询,我当然知道这会导致全表扫描,不过速度确实太慢了,直观感受,全表扫描不至于这么慢!
LA0WAN9
2021/12/14
2.4K0
谈谈SQL查询中回表对性能的影响

相似问题

SQL Oracle -多个表上的多个计数查询

20

SQL -同一个表上的多个查询

34

在一个表上执行多个MS SQL查询

10

在多个表上具有多个联接的SQL查询

13

多个表上的联接的SQL查询性能

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文