简单又复杂的sql查询。。。想屎的心都有了。...

问题描述

A表:字段:aidB表:字段:bidA,B两表没任何关系。C表:字段:aid,bid---1条记录代表一个组合需求:想找出所有a,b组合,是C表不存在的组合----------------------select a.aid,b.id from A,B where not in C 什么东西...?怎么写。。。头皮都想破了。。。。

解决方案

select DISTINCT t.* from (select a.id aid,b.id bid from atest a,btest b) t,ctest c where (t.aid=c.aid and t.bid !=c.bid) or (t.aid !=c.aid and t.bid =c.bid) or t.aid not in (select c1.aid from ctest c1 ) or t.bid not in (select c1.bid from ctest c1 )
解决方案二:
其实就是个笛卡尔积
解决方案三:
select aid,bid from a,b where (aid,bid) not in(select aid,bid from ab)
解决方案四:
我还想着 a.aid || b.bid not in (c.aid||c.bid)
解决方案五:
select a.aid,b.bid from a full join b on 1=1 left outer join c on a.aid=c.aid or b.bid=c.bid where c.aid is null and c.bid is null
解决方案六:
直接求笛卡尔积的sql。。太牛逼了吧。。直接查。。链接都不用。。。
解决方案七:
依照LZ的思路,貌似这样就好了..select a.aid,b.id from A,B where not exists (select null from C where C.aid = A.aid and C.bid = B.id)或者我觉得这样写应该也可以..select t.*from ( select a.aid aid, b.id bid from A,B) tinner join C on C.aid <> t.aid and C.bid <> t.bid
解决方案八:
先搞一下a,b 的排列组合,在查询c不在这个组合里的

时间: 2024-08-25 11:38:31

简单又复杂的sql查询。。。想屎的心都有了。...的相关文章

我想写一个关于json串的sql查询,具体请看下面,

问题描述 我想写一个关于json串的sql查询,具体请看下面, 我想写一个关于json串的sql查询,比如说我数据库的某一字段是'BZ',内容是{name:123,age: 14},{name:456,age: 15}这样的,请问如何写查询,比如说通过name的值来查找 age的值,我要比如说我要查的name=123的 那么该'BZ'字段显示的就是 14 ,各位大神帮帮忙啦,小弟不胜感激!!! 解决方案 select max(case getname(BZ) when '123' then ge

[Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel

[Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel 楼主  发表于 2013-5-21 14:33:47 | 查看: 869| 回复: 1 SQL查询模型QSqlQueryModel 版权声明 该文章原创于作者yafeilinux,转载请注明出处! 导语 在上一篇的最后我们讲到,Qt中使用了自己的机制来避免使用SQL语句,为我们提供了更简单的数据库操作及数据显示模型,分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的Q

15个初学者必看的基础SQL查询语句

本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插入SQL 我们在开始创建数据表和向表中插入演示数据之前,我想给大家解释一下实时数据表的设计理念,这样也许能帮助大家能更好的理解SQL查询. 在数据库设计中,有一条非常重要的规则就是要正确建立主键和外键的关系. 现在我们来创建几个餐厅订单管理的数据表,一共用到3张数据表,Item Master表.Order Master表和Order Detail表. 创建表: 创建Item Maste

字段-如何禁止sql查询时数据类型的自动转化

问题描述 如何禁止sql查询时数据类型的自动转化 用的是sqlserver2005,里面设计了一个表table,里面有一个字段column1设置的是nvarchar(100),里面有两条记录,分别是'2301'和'002301',现在用语句 SELECT * FROM dbo.table WHERE column1=2301,按理来说应该将2301转化为'2301'来查询或者报错,但是奇怪的是,数据库将column1中储存的字段转化为了int型,这样一来'2301'和'002301'就都转化为2

《PHP和MySQL Web开发从新手到高手(第5版)》一一2.2 使用phpMyAdmin运行SQL查询

2.2 使用phpMyAdmin运行SQL查询 PHP和MySQL Web开发从新手到高手(第5版) 如同Web服务器设计响应来自客户端(一个Web浏览器)的请求一样,MySQL数据库服务器会响应来自客户端程序(client programs)的请求.在本书稍后的内容中,我们将以PHP脚本的形式编写自己的MySQL客户端程序.但是现在,我们可以使用XAMPP和MAMP二者都有的一个客户端程序,这就是phpMyAdmin. phpMyAdmin本身是用PHP编写的.一个高级的Web应用程序.除了包

《PHP和MySQL Web开发从新手到高手(第5版)》一2.2 使用phpMyAdmin运行SQL查询

2.2 使用phpMyAdmin运行SQL查询 PHP和MySQL Web开发从新手到高手(第5版) 如同Web服务器设计响应来自客户端(一个Web浏览器)的请求一样,MySQL数据库服务器会响应来自客户端程序(client programs)的请求.在本书稍后的内容中,我们将以PHP脚本的形式编写自己的MySQL客户端程序.但是现在,我们可以使用XAMPP和MAMP二者都有的一个客户端程序,这就是phpMyAdmin. phpMyAdmin本身是用PHP编写的.一个高级的Web应用程序.除了包

如何编写更好的SQL查询:终极指南(上)

结构化查询语言(SQL)是数据挖掘分析行业不可或缺的一项技能,总的来说,学习这个技能是比较容易的.对于SQL来说,编写查询语句只是第一步,确保查询语句高效并且适合于你的数据库操作工作,才是最重要的.这个教程将会提供给你一些步骤,来评估你的查询语句. 首先,应该了解学习SQL对于数据挖掘分析这个工作的重要性; 接下来,应该先学习SQL查询语句的处理和执行过程,以便可以更好的了解到,编写高质量的查询有多重要.具体说来就是,应该了解查询是如何被解析.重写.优化和最终评估的; 掌握了上面一点之后,你不仅

优化SQL查询:如何写出高性能SQL语句

1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择"索引查找"方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 "全表扫描"方式. 可见,执行计划并不是固定的,它是"个性化的".产生一个正确的"执行计划"有两点很重要:

工作10几年的dba总结的sql查询语句优化

目录 1.什么是执行计划?执行计划是依赖于什么信息. 2. 统一SQL语句的写法减少解析开销 3. 减少SQL语句的嵌套 4. 使用"临时表"暂存中间结果 5. OLTP系统SQL语句必须采用绑定变量 6. 倾斜字段的绑定变量窥测问题 7. begin tran的事务要尽量地小. 8. 一些SQL查询语句应加上nolock 9.加nolock后查询经常发生页分裂的表,容易产生跳读或重复读 10.聚集索引没有建在表的顺序字段上,该表容易发生页分裂 11.使用复合索引提高多个where条件