站内搜索: 请输入搜索关键词

当前页面: 开发资料首页JSP 专题不知道sql语句能不能解决

不知道sql语句能不能解决

摘要: 不知道sql语句能不能解决


在一个表里有三个字段分别是name1,name2,name3。
我在一个下拉列表框里列出所有不重复的值


没看清楚题意。是三个字段一起放在同一个下拉筐中,并祛除重复的值吗?还是其他意思


是的,是三个字段一起放在同一个下拉筐中,并祛除重复的值


高手们都睡觉了么??有谁能帮帮小弟啊!谢谢谢谢啦


好象不行吧 单个字段的还可以distinct,但是三个字段的值查出来再互相比较祛除重复值好象不行哦


只能查出来之后,在进行一次比较,去除重复的记录,然后加到下拉列表中


可以写三个查询 ,然后把三个查询的结果加在一起放到下拉框里。
1、select a.name1 from table a
2、select a.name2 from table a where a.name2 not in ( select b.nme1 from table b)
3、select a.name3 from table a where a.name3 not in(select b.name2 from table b) and a.name3 not in (select c.name1 from table c)



select x=name1 from a as a1 union
select name2 from a where name2 not in ( select name1 from a) union
select name3 from a where name3 not in(select name2 from a) and name3 not in (select name1 from a)
go

同意hityxn的方法,通过union可以得到一张完整的虚拟表a1字段名为x


我试试看,先谢谢了


gggmin,请问一下,我最后怎么合并成一个字段,谢谢了


您拷贝我上面的代码,改一下表名,所有语句一起执行,得到的就是一张表一个字段。因为每个SELECT语句后都有union连接


您可以把上面代码拷到SQL查询分析器里运行一下,看结果您就知道了


就是这么搞的,可是得出来的就是name1字段的值,把name1里面相同的去掉了,但是没有整合name2,name3字段的值


这样吗?你的.sql建表代码可否发上来看看



select name1 from manage as a1 union
select name2 from manage where name2 not in ( select name1 from manage) union
select name3 from manage where name3 not in(select name2 from manage) and name not3 in (select name1 from manage)
可是通过查询分析器查出来的就只有对name1里有的值进行了处理



第三句 这个地方错了 and name not3 in 改为 and name3 not in


set可以处理重复的元素的.




是的,我刚刚粘贴的时候不小心改错了,但是执行的时候是正确的执行的
select name1 from manage as a1 union
select name2 from manage where name2 not in ( select name1 from manage) union
select name3 from manage where name3 not in(select name2 from manage) and name3 not in (select name1 from manage)
只有name1字段里的值


你注意看看查询的结果,结果表的字段是name1是因为你第一句是select name1 from 而不是select 新字段名=name1 from .....
但这样不影响结果,里面的值肯定是包含全部不重复的



java 中处理重复元素那么方便
Set s= new ArrayList(list);
这样就得到不重复的

如果要得到list, 只需要用contains这个方法判断下就可以了.


select name1 from 表
union
select name2 from 表
union
select name3 from 表



select distinct name1 from (
select distinct name1 from mange
union
select distinct name2 from mange
union
select distinct name3 from mange)

然后把这些值放在拉列表框里就行了。



up.



zxf_feng,您的sql语句不可以执行,')' 附近有语法错误。


还是不行吗?你的建表代码有没有?有的话发上来测试一下(包括insert 语句)


select distinct name1 from XXX union select distinct name2 from XXX2 union select name2 from XXX3
取出来之后再排重。


谢谢各位的帮助,可以了,用了zxf_feng(阿日)sql语句,但是这条sql语句后面要构建一个虚拟的表select distinct name1 from (
select distinct name1 from mange
union
select distinct name2 from mange
union
select distinct name3 from mange) as table1

再次感谢gggmin的认真帮助


用Set也行,seletc name1,name2,name3 from table.
Set s=new Set();
while(rs.next()){
s.add(rs.getString("name1");
s.add(rs.getString("name2");
s.add(rs.getString("name3");
}



之前的连接数据库什么的我就不说了
就说怎么在JSP 页面里面实现吧!
这是我的一个小项目里的代码。
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.sql.*" %>

<%!Connection con=null; %>

................


<td>一级标题:</td>
<td><select name="firstlevel">
<%
try {
if(sqlb.getCon()!=null){
con=sqlb.getCon();
String strSql="select * from FirstLevelTitle";
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(strSql);
while(rs.next()){%>
//在下拉列表中显示

<option><%=rs.getString(1) %></option>//name1。
<option><%=rs.getString(2) %></option>//name2。
<option><%=rs.getString(3) %></option>//name3。
<%} %>
<%}
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
%>
</select></td>


↑返回目录
前一篇: 小女子向各位大侠请教:Struts中向JSP传值 的问题
后一篇: 请问:截获http请求(响应)的网络传输报文