sql语句处理问题

如下:有张表

id    sql_field
1     SELECT * FROM (`abc`) WHERE (telnu = "1" OR telnum2 = "2") ORDER BY `lastupdate` DESC;    
2     SELECT * FROM (`abc`) WHERE (telnu = "1" OR telnum2 = "22") ORDER BY `lastupdate` DESC; 
3     SELECT * FROM (`abc`) WHERE (telnu = "1" OR telnum2 = "12") ORDER BY `lastupdate` DESC; 
4     SELECT * FROM (`abc`) WHERE (telnu = "1" OR telnum2 = "42") ORDER BY `lastupdate` DESC; 
5     SELECT * FROM cdb WHERE digest<10 AND displayorder >=43 AND fid=55 ORDER BY tid DESC LIMIT 0, 10; 
6     SELECT * FROM cdb WHERE digest>30 AND displayorder >=12 AND fid=55 ORDER BY tid DESC LIMIT 0, 10; 
7     SELECT * FROM cdb WHERE digest>10 AND displayorder >=2 AND fid=55 ORDER BY tid DESC LIMIT 0, 10; 
                    。
                    。
                    。

里面的sql_field 字段中有很多类似但不重复的查询语句,怎么样一个类型的查询语句只保留一个呢,求指导

阅读 2.8k
4 个回答

把变动的数量当做参数传入查询语句中,比如第一类的telnutelnum2,每次调用的时候传入具体的查询值即可

SELECT * FROM (`abc`) WHERE telnu = "1" OR telnum2 in("2","22","12","42") ORDER BY `lastupdate` DESC; 
SELECT * FROM cdb WHERE ( (digest<10 AND displayorder >=43) OR (digest>30 AND displayorder >=12) OR (digest>10 AND displayorder >=2) ) AND fid=55 ORDER BY tid DESC LIMIT 0, 10; 

between($xxx)

跟题主说一下,
凌丶这个答案是不对的,between是在一个范围内,此处应该用in,一楼是正解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题