问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一个sql模糊查询语句 已经难倒了2个人了

发布网友 发布时间:2022-04-08 00:32

我来回答

2个回答

懂视网 时间:2022-04-08 04:54

USE [tempschool]
GO
/****** 对象: Table [dbo].[SelectC] 脚本日期: 07/02/2015 11:04:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SelectC](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[Sid] [int] NULL,
	[Cid] [int] NULL,
	[Tid] [int] NULL,
 CONSTRAINT [PK_SelectC] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

插入一些模拟数据, 假设CID=1和CID=2的分别是语文和数学,那么根据下图,同时选了语文和数学的应该是1号和5号学生

技术分享

 

先不要看答案,在脑子里写一个sql,然后再往下看

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

一开始得到了很多错误的答案,也是最容易出现的答案

--错误的答案,一条记录都找不到
select * from selectC where cid=1 and cid=2

--错误的答案,只选了一门语文的学生也会出现在记录中
select * from selectC where cid=1 or cid=2

  

 

 

那么正确的答案应该怎么做呢,目前我找到3种方法,

方法一:

select a.sid from 
SelectC as a left join SelectC as b on b.sid = a.sid
where a.cid =1 and b.cid =2

  

对了,笛卡尔乘积,无限关联就可以选出同时选了语文数学英语等等等等的情况  

 

 

方法二:

  SELECT sid
  FROM SelectC
  WHERE (cid = 1) OR
   (cid = 2)
  GROUP BY sid
  HAVING (COUNT(*) >= 2) 

 这是第二种,首先先通过条件or选择出所有的语文或者数学的,然后根据sid汇总,只要count数量大于2的就是同时选择了语文和数学的,如果要扩展再多的就是修改count的数量和or的条件

 

方法三:

select distinct sid from selectC where
 sid in(select sid from selectc where cid = 1)
and sid in(select sid from selectc where cid = 2)

第三种方法似乎效率就比较低了,需要用in来做查询。

 

 

不知道大家还有没有其他的写法

 

一个看似很简单的SQL却难倒了很多人

标签:

热心网友 时间:2022-04-08 02:02

查询结果只有B、D,如果A可以的话C同样可以,所以你表述有误吧?

select * from tb where (case CHARINDEX('2', note) when 0 then note else SUBSTRING(note,0,CHARINDEX('2', note)) end) like '%瓜%'

追问A列有 1黄瓜 1.苦瓜片 都是符合要求的啊 麻烦在给看看

追答select * from tb where note  LIKE '%1._瓜%' or note like '%1.__瓜%'

眼瞎没看到

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 dnf90版本搬砖巨龙怎么赚钱 dnf现在90级上哪搬砖。 dnf90级囤什么材料能赚钱 dnf90级囤货攻略 你认为中国最帅的10位男主持人都有谁? 90版本的DNF怎么搬砖刷游戏币 沈阳FM98.6晚上12点左右有个叫午夜归航的节目,具体每周几都几点到几点播放啊? 锦旗上应该些什么字? 我要送给数学老师一面锦旗。该怎么写? 帮忙写一幅锦旗 用Word打锦旗的内容格式怎么打??? 锦旗书写格式 macbook pro type-c u盘怎么用 usb type c如何连接u盘 男职工生育险报销多久给钱 心灵鸡汤到底有没有用? 心灵鸡汤有用么? 于丹式心灵鸡汤,究竟有没有用? 心灵鸡汤喝了有用吗? 心灵鸡汤,真的有用吗 心灵鸡汤这种东西有没有用 DNF一个满级号一天搬砖能赚100万吗?怎么赚钱? 菠萝蜜不能与什么食物一起吃 连接广域网有几种方式? 两个局域网要互联为广域网,那么我们可以选择的互联设备应该是 将局域网和广域网连接,需要用什么 广域网宽带接入方式有哪些 为什么可以通过交换机来连接广域网? 局域网与广域网通过什么连接 广域网是由什么相连而成 广域网接口是什么 用于局域网 和广域网连接的网络连接器是什么? 华为手机支持miracast功能吗 Windows如何打开heic,heic格式图片怎么转化 美源这个名字有在诗中的特殊含义? 美源企业管理咨询中美源的涵义 美源综黑3N是什么意思 集思广益,求 “美源”的英语翻译。,或者是简写,或者是谐音翻译。 要求翻译出来表达的意思比较美好。。 美源075.078.1y1是什么意思 美源染发霜 5N,6N,7N之间颜色有什么区别 美源丝质护发染发膏里的n,b是什么意思