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) //取第一行值

如果您查询十次一条数据。

通常是要建立十次连接。

如果您查询一次十条数据。

那么只要建立一次连接。

建立连接需要经过一些步骤,实例若干object。

这个差距是显而易见的。

你这两句查询有重复项(id)如何何并?合并就是覆盖了,再说

前者 select id后者是select *而后者其实里面也有id;所以如果合并了$resRow["id"]该是哪组数据呢?

合并是要么完全一致;要么完全不一致

前者用union就能解决,后者查两次(不用担心效率,差不多的);查完保存数组,一个

array_merge\array_push就搞一起了


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存