前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >一些SQL语句的实用方法

一些SQL语句的实用方法

作者头像
用户11325910
发布2024-10-31 19:01:58
发布2024-10-31 19:01:58
9000
代码可运行
举报
运行总次数:0
代码可运行

以题库表为例

SQL 多个字段同时模糊查询

现在有个需求是,在题库表中传入字段searchValue,希望可以根据题目和选项模糊查询符合该参数的数据,最开始时,我用的是concat连接:

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM `plant_e_topic`
where 
CONCAT(topic,optionA,optionB,optionC,optionD,optionE,optionF) like concat(concat('%',#{searchValue},'%'));

但是这样子数据总是不全,于是我便换用其它方法,这种方法目前数据准确率为百分之百:

代码语言:javascript
代码运行次数:0
复制
SELECT * FROM `plant_e_topic`
where (
topic like concat('%',1#{searchValue},'%') 
or optionA like concat('%',#{searchValue},'%') 
or optionB like concat('%',#{searchValue},'%') 
or optionC like concat('%',#{searchValue},'%') 
or optionD like concat('%',#{searchValue},'%') 
or optionE like concat('%',#{searchValue},'%') 
or optionF like concat('%',#{searchValue},'%') 
);

需要注意的是:

因为and的优先级高于or,所以需要在or的外层套一个括号,不然数据便会出错

根据题目进行试题查重操作

在平时工作学习中,我们难免会遇到需要进行查重的操作,于是我们便可以使用子查询加count>1来进行查重操作,具体实现sql如下:

代码语言:javascript
代码运行次数:0
复制
select * from plant_e_topic
where topic in (
select topic from plant_e_topic
group by topic having count(topic) > 1
         )

该sql的子查询中,查询出来了根据题目分组并且数量大于1的题目(说明是重复题目),外层sql再查询该表中的题目符合重复题目的所有数据信息

注:以上所有的select * from 中的 * 要换成具体字段,此目的也是为了性能优化
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024/04/24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以题库表为例
    • SQL 多个字段同时模糊查询
    • 根据题目进行试题查重操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档