mysql动态多条件查询语句!!!!

一组教师姓名,课程,班级的数据查询条件输入框分别为key1 key2 key3
用户自己想怎么查就怎么查按照姓名,或者课程,或者班级,或者任意组合查询信息怎么写语句???还要支持模糊查询。。。
我说的可能不清楚 是在javaservlet文件中写mysql查询语句 动态多条件的 上面3个只是例子 条件多很多种
输入框有很多 key1key2key3........
然后servlet中需要写的sql语句:string sql="SELECT * FROM teacher WHERE TeachName like '%"+key+"%'。。。。。。。"怎么写 and连接是所有条件都要有 用户可能只填任意个。。用if判断输入框值为不为空3个左右还算简单 以上就复杂了 想要一句sql语句就能代替的

第1个回答  2014-01-09
select * from table where (name1 like '%key1%' or name2 like '%key2%' or name3 like '%key3%')

同理,你还可以任意再次组合,用or连接就行

如再上 name1 like key1 or name1 like key2 or name1 like key3

name2 like key1 or name2 like key2 or name2 like key3

等等追问

这个不对啊 or的效果是或 只取后一个条件 我要的效果是 输入一个条件找符合那个的 输入多个查询同时符合的

追答

那是这样的,

你事先要定义一个变量来存储要执行的东西



$where = '1';

if($key1) $where .= ' and name1 like "%key1%"';
if($key2) $where .= ' and name2 like "%key2%"';

然后执行语句 select * from table where $where

大致就是这个意思

追问

不就是上一个回答么= = javaservlet中怎么定义啊 $识别不了 报错

追答

这个完全是语法的问题,你改成j的语法不就行了

应该是

string key1 = request.getParameter("key1"));
string key2 = request.getParameter("key2"));

string wheres = "1";
if(key1) wheres .= ' and name1 like "%'+key1+'%"';
if(key2) wheres .= ' and name1 like "%'+key2+'%"';
然后执行语句 "select * from table where " + wheres

大致是这个,你看看有么有拼错,手打的

追问

数据库中age定义为int 长度2位 key1 key2之间的数据String sql1 = "SELECT * FROM teacher WHERE age >='" + key1 + "' and age=='key1'不行 String key1 = req.getParameter("key1");
string和int比大小不行?

追答

java属于强类型语法,你什么类型就得指定什么类型

我给出的string 只是例子,你要根据实际看用 int 还是string 或者其他的

包括
if(key1) wheres .= ' and name1 like "%'+key1+'%"';if(key2) wheres .= ' and name1 like "%'+key2+'%"'

也也得根据自己的情况改变的,看是like还是等于,还是其他

本回答被提问者采纳
第2个回答  2014-01-09
$where = "1";
if($key1){
    $where .= " and key1 like '%".$key1."%'";
}
if($key2){
    $where .= " and key2 like '%".$key2."%'";
}
if($key3){
    $where .= " and key3 like '%".$key3."%'";
}
$sql = "select * from table where ".$where;

追问

我是在java里写的代码 Servlet中$识别不了

追答

好吧,javaservlet不了解

相似回答