你可以才用and和or?两个组合起来使用,例如:
--只是大概的结构?like?语句自己拼接
select?*
from?表名
where?(传入的姓名?is?null?or?姓名?like?传入的姓名)--没填写姓名是则该条件不生效
and?(传入的地址?is?null?or?地址?like?传入的地址)--没填写地址是则该条件不生效
and?(传入的公司?is?null?or?公司?like?传入的公司)--没填写公司是则该条件不生效
and?(传入的学历?is?null?or?姓名?like?传入的学历)--没填写学历是则该条件不生效
select '1' cs,group,name from a,b where b.yuanshiid=a.id
union all
这边先给你提供一个动态SQL
select
*
from
table
where
①.=1 //这一步是针对所有条件均未满足(where后必须跟子句)
if(name != "" and name!=null){ and name=条件一}
if(sex != "" and sex!=null){ and sex=条件二}
......
个人解题思路
第一种:
不额外创建表(连接查询)
首先,将所有条件单独查询并将这些语句内连接
例:
select * from tb as t1
join
on
(join........ on .......)
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) //取第一行值
首先一个与本问题无关的问题,你获取最大值,为什么要用while循环呢,直接这样就可以:
$sql
=
"SELECT
max(id)
as
MAX
FROM
a"
$data
mysql_query($sql,
$conn);
list($var_max_num)
mysql_fetch_row($data);
mysql_free_result($data);//注意及时FREE
另外,及时你不想用自动增加,也应该给这个字段设置为主键或者唯一索引,不要让它重复.
还有,对于实际使用了程序系统,每次都去max并不可取,应该另外设置一个静态参数表,只有一条记录、一个字段,用来存放下一次插入的数据,每次需要插入数据的时候就来查这个表,速度应该比MAX快.
以上就是土嘎嘎小编大虾米为大家整理的相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!