用sqlite命令2列

时间:2013-08-24 20:28:35

标签: sqlite

我想通过名字订购但是应该首先列出创建者,所以我写了下面的内容并得到了错误

  

第一个ORDER BY术语与结果集中的任何列都不匹配

我如何写这个,所以创作者是第一个结果?我不明白为什么我有这个错误。我的问题是

select u.id as id, u.name as name, 0 as creator from User u 
join Moderator m on m.forumID=@forumID and m.userID=u.id 
union 
select u.id, u.name, f.creator as creator from User u 
join Forum f on f.id=@forumID and u.id=w.creator 
order by creator<>0, u.name

2 个答案:

答案 0 :(得分:3)

您无法在creatorWHEREJOIN语句中使用别名ORDER BY

在您的案例中使用列数:

SELECT ....
ORDER BY 3, 2

这不是一个好习惯,但它适用于你的问题......

答案 1 :(得分:3)

select u.id as id, u.name as name, 0 as creator from User u 
join Moderator m on m.forumID=@forumID and m.userID=u.id 
union 
select u.id, u.name, f.creator from User u 
join Forum f on f.id=@forumID and u.id=w.creator 
order by creator, name

在联合中,第一个查询给出了列名,以下查询只需要返回匹配的列类型值,它们的名称并不重要。