找回密码
 注册
搜索
热搜: java php web
查看: 2852|回复: 6

数据库查询问题

[复制链接]
发表于 2009-1-26 08:58:47 | 显示全部楼层 |阅读模式
有两个表 test1 和test2,如下
test1                              
id       name1     
1        sss            
1        ddd   
2        bbb
3        eee

test2
id       name2
1        ccc  
2        fff

我想查到这么一个情况
但凡id 相同的只取其中一条记录。不管是那个表的记录。即查出来是下边这样的结果即可
id     name
1      sss(或者ccc,ddd)
2      fff(bbb)
3      eee
请教各位达人 查询语句该如何写??
发表于 2009-1-26 10:24:11 | 显示全部楼层
答案一:由QQ群用户 微笑的河马 提供
select * from table1 where id in(select id from table2)

答案二:由QQ群用户 枫叶 提供
select a.* from test1 a outer join  test2 b on a.id=b.id

答案三:由QQ群用户 贻笑 提供
select distinct t1.id,t1.name from test1 t1,test2 t2
select distinct t1.id,t1.name from test1 t1,test2 t2
回复

使用道具 举报

 楼主| 发表于 2009-1-26 09:42:34 | 显示全部楼层
以上答案都不符合要求
语句: select distinct t1.id,t1.name from test1 t1,test2 t2 的结果是



不符合要求,有两个id 为1

语句: select * from test1 where id in(select id from test2) 的结果是



上述语句结果全是test1里的,如果我想换成test2的值呢?

我在把问题描述一下:
test1                         test2
id1   name1              id2    name2
1     sss                    1       ccc
1     ddd                   2      fff
2     bbb                     
3     eee

我想要的是
test3
id3      name3
1        sss或者ccc或者ddd
2        bbb或者fff
3        eee
要求是表name3里的值唯一,如在name3中的1 可以对应sss,也可以对应test2里的1的值ccc。2同样如此。但是不能1 对应着两个name值

现在大家大部分的答案是查的都是test1里的值,或者干脆两个表里的值都查出来,大家可以想想下,要求是随机的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2009-1-26 10:44:46 | 显示全部楼层
SELECT * from table1
UNION
select * from table2


SELECT * from `table1` at1 left outer join `table2`  bt1 on at1.`id` = bt1.`id`
UNION
SELECT * from `table1` at1 RIGHT outer join `table2`  bt1 on at1.`id` = bt1.`id`
回复

使用道具 举报

发表于 2009-1-26 11:03:41 | 显示全部楼层
然后再使用 select distinct   或者rand 也许能达到你的要求
回复

使用道具 举报

 楼主| 发表于 2009-1-26 09:58:37 | 显示全部楼层
表述加了。
我想要的是
test3
id3      name3
1        sss或者ccc或者ddd
2        bbb或者fff
3        eee
要求是表name3里的值唯一,如在name3中的1 可以对应test1里的sss或者ddd,也可以对应test2里的1的值ccc。2同样如此。但是不能1 对应着两个name值
也就是说
不能
1    sss, ccc
2  bbb,ffff
3 eee
也不能
1    sss .ddd
2 bbb.ffff
3 eee
也不能
1   ddd,ccc
回复

使用道具 举报

发表于 2009-1-26 10:35:34 | 显示全部楼层
select a.id,max(a.name) from test1 a LEFT OUTER  join  test2 b on a.id=b.id group by a.id
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-13 10:16

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表