你可以才用and和or?兩個組合起來使用,例如:
創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供臨朐網(wǎng)站建設(shè)、臨朐做網(wǎng)站、臨朐網(wǎng)站設(shè)計、臨朐網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、臨朐企業(yè)網(wǎng)站模板建站服務(wù),十年臨朐做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
--只是大概的結(jié)構(gòu)?like?語句自己拼接
select?*
from?表名
where?(傳入的姓名?is?null?or?姓名?like?傳入的姓名)--沒填寫姓名是則該條件不生效
and?(傳入的地址?is?null?or?地址?like?傳入的地址)--沒填寫地址是則該條件不生效
and?(傳入的公司?is?null?or?公司?like?傳入的公司)--沒填寫公司是則該條件不生效
and?(傳入的學(xué)歷?is?null?or?姓名?like?傳入的學(xué)歷)--沒填寫學(xué)歷是則該條件不生效
select '1' cs,group,name from a,b where b.yuanshiid=a.id
union all
select '2',group,name from a,b where b.afterid=a.id
這邊先給你提供一個動態(tài)SQL
select
*
from
table
where
1=1 //這一步是針對所有條件均未滿足(where后必須跟子句)
if(name != "" and name!=null){ and name=條件一}
if(sex != "" and sex!=null){ and sex=條件二}
。。。。。。
個人解題思路
第一種:
不額外創(chuàng)建表(連接查詢)
首先,將所有條件單獨查詢并將這些語句內(nèi)連接
例:
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=條件
然后 將上面的查詢結(jié)果看作一個表t
select t.*,count(t.id) from t
group by t.id // 以id分組
order by count(t.id) asc //以id數(shù)量為降序
limit(0,1) //取第一行值
1、執(zhí)行sql語句:SELECT * FROM `article` WHERE catalog_id=13 and article_id70+2 and article_id70-2;
2、在實際使用的時候70這里是要傳參數(shù)進(jìn)去的,當(dāng)然是參數(shù)+2和參數(shù)-2,應(yīng)該是大于等于和小于等于。語法肯定沒錯,只是寫那么個意思,你不想要70這個值只需要在程序里面把他去掉就可以了。
如果你說前后的article_id不是固定間隔的,那也有辦法,你可以分別查兩次,然后用union把數(shù)據(jù)組合在一起,比如:SELECT * FROM `article` WHERE catalog_id=13 and article_id70 order by article_id limit 0,2 union SELECT * FROM `article` WHERE catalog_id=13 and article_id70 order by article_id desc limit 0,2;這樣查詢效率會低,暫時想到的就是這個方法了
首先一個與本問題無關(guān)的問題,你獲取最大值,為什么要用while循環(huán)呢,直接這樣就可以:
$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
另外,及時你不想用自動增加,也應(yīng)該給這個字段設(shè)置為主鍵或者唯一索引,不要讓它重復(fù)。
如果你的程序沒有問題,那么可能是存在并行,一個進(jìn)程查出最大為6之后,不斷的從7、8、9開始插入數(shù)據(jù),另外一個進(jìn)程可能查出最大為7之后,從8、9、10之后開始插入數(shù)據(jù)。
還有,對于實際使用了程序系統(tǒng),每次都去max并不可取,應(yīng)該另外設(shè)置一個靜態(tài)參數(shù)表,只有一條記錄、一個字段,用來存放下一次插入的數(shù)據(jù),每次需要插入數(shù)據(jù)的時候就來查這個表,速度應(yīng)該比MAX快。