mysql组件如何进行多次查询

mysql组件如何进行多次查询,第1张

这边先给你提供一个动态SQL

select

*

from

table

where

1=1 //这一步是针对所有条件均未满足(where后必须跟子句)

if(name != "" and name!=null){ and name=条件一}

if(sex != "" and sex!=null){ and sex=条件二}

。。。。。。

个人解题思路

第一种:

不额外创建表(连接查询)

首先,将所有条件单独查询并将这些语句内连接

例:

select * from tb as t1

join

(select * from tb where name=条件) as t2

on

t1.id=t2.id

join

(select * from tb where age=条件) as t3

on

t1.id=t2.id

(join........ on .......)

where

t1.sex=条件

然后 将上面的查询结果看作一个表t

select t.*,count(t.id) from t

group by t.id // 以id分组

order by count(t.id) asc //以id数量为降序

limit(0,1) //取第一行值

中间表应该存着文章表的ID和该文章对应的分类的ID。文章表作为主表,左连接上中间表,再左连接上分类表。文章表作为主表,即使一本书它没有分类,也能查询出这本书。因为一本书会有多个分类,可以使用group by或者去重函数来去掉重复的书。如果查询时想要查出一本书有几个分类,可以使用group_cat()函数把所有分类名称拼接在一起。要查询某一个分类的书时,where 后面分类ID等于要查询的分类ID即可。

多表查询是指基于两个和两个以上的表或是视图的查询.在实际应用中,查询单个表可能不能满足你的需求,(如显示sales部门位置和其员工的姓名),这种情况下需要使用到(dept表和emp表)

自连接是指在同一张表的连接查询

select * from emp where empno=(select mgr from emp where ename='ford')

子查询是指嵌入在其它sql查询语句中的select语句,也叫嵌套查询

单行子查询是 指只返回一行数据的子查询语句

select * from emp where deptno=(select deptno from emp where ename='smith')

多行子查询指返回多行数据的子查询 使用关键字 in

如果我们的一个子查询,返回的 结果是多列,就叫做列子查询

合并多个select语句的结果,可以使用集合 *** 作符 union,union all


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8498312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存