一个表是 用户 usertable
id int
name char
vote int作品表mytable
id int
myname char
vote int
clickcount int
因为如果是原创的分纪录在用户表 转载的纪录在mytable中
现在想对用户进行排序是以用户的分数排的 用户可以有原创和转载 如果原创的分高就用原创的如果转载的分高就用转载的对其进行排序
id int
name char
vote int作品表mytable
id int
myname char
vote int
clickcount int
因为如果是原创的分纪录在用户表 转载的纪录在mytable中
现在想对用户进行排序是以用户的分数排的 用户可以有原创和转载 如果原创的分高就用原创的如果转载的分高就用转载的对其进行排序
insert into @userTable values(1 , 'user1' , 15)
insert into @userTable values(2 , 'user2' , 90)
insert into @userTable values(3 , 'user3' , 80)
declare @myTable table(id int , myname varchar(10) , vote int , clickcount int)
insert into @myTable values(1 , 'user1' , 20 , 2)
insert into @myTable values(2 , 'user1' , 10 , 1)
insert into @myTable values(3 , 'user1' , 70 , 1)
insert into @myTable values(4 , 'user2' , 70 , 1)
insert into @myTable values(5 , 'user2' , 60 , 1)
insert into @myTable values(6 , 'user2' , 96 , 1)
---------------------------------------------------
select * from @userTable
-- 用户表
id [name] myvotes
1 user1 15
2 user2 90
3 user3 80
----------------------------------------------------
select * from @myTable
-- 文章表
id myname vote clickcount
1 user1 20 2
2 user1 10 1
3 user1 70 1
4 user2 70 1
5 user2 60 1
6 user2 96 1
----------------------------------------------------
select a.[name] , (case when a.myvotes<b.vote then b.vote else a.myvotes end) as vote
from @userTable a
left outer join (select myname , max(vote) as vote from @myTable group by myname) b
on a.[name] = b.myname
--你需要的结果
name vote
user1 70
user2 96
user3 80---我理解 你是这个意思
--如果我理解的不对 说
--昨天怎么也访问不了
还有可以在mysql4 下可以执行的马
from @userTable a
left outer join (select myname , max(vote) as vote from @myTable group by myname) b
on a.name = b.myname标准的T-SQL语句
这个拿到mySql里面去执行应该是没有什么问题的
你再试一试
(case when u.myvotes<m.myvotes
then m.myvotes else u.myvotes end) as vote
from userTable u left outer join myTable m on u.usrID = m.myID order by vote des
那结果重复 在所难免那