一些SQL语句的实用方法
以题库表为例
SQL 多个字段同时模糊查询
现在有个需求是,在题库表中传入字段searchValue,希望可以根据题目和选项模糊查询符合该参数的数据,最开始时,我用的是concat连接:
SELECT * FROM `plant_e_topic`
where
CONCAT(topic,optionA,optionB,optionC,optionD,optionE,optionF) like concat(concat('%',#{searchValue},'%'));
但是这样子数据总是不全,于是我便换用其它方法,这种方法目前数据准确率为百分之百:
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如下:
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 中的 * 要换成具体字段,此目的也是为了性能优化
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 楠笙
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果
音乐天地