简体   繁体   English

sql server连接查询问题

[英]sql server join query issue

I am using this query for pagination 我正在使用此查询进行分页

 SELECT * 
 FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY {0} {1}) AS RowNum, * 
     FROM Cars 
     WHERE IdOwner = {2}) AS Rows 
 WHERE RowNum > {3} AND RowNum < {4}

I want to make the pagination query on 2 tables, not on just one as i do now. 我想对2个表进行分页查询,而不仅仅是像现在这样对一个表进行分页查询。

SELECT * 
FROM 
    (SELECT ROW_NUMBER() OVER (ORDER BY {0} {1}) AS RowNum, 
            Cars.Id, Cars.Make, Cars.Model, Color.Name 
     FROM Cars 
     INNER JOIN Color ON Cars.ColorId = Color.Id 
     WHERE IdOwner = {2}) AS Rows 
WHERE RowNum > {3} AND RowNum < {4} 

I am getting a Incorrect syntax near the keyword 'WHERE'. Incorrect syntax near the keyword 'WHERE'.收到Incorrect syntax near the keyword 'WHERE'.

Problem solved. 问题解决了。 Thanks guys, i am such a noob :( 谢谢大家,我真是个菜鸟:(

SELECT * 
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY c.Id  ) AS RowNum, 
       c.Id, c.Make, c.Model, d.ColorName 
       FROM Car AS c 
       INNER JOIN Color AS d 
       ON c.ColorId = d.Id WHERE c.IdOwner=1 ) AS Rows
WHERE RowNum > 0 AND RowNum < 11 

It could be a bracket problem, and you have to prefix your IdOwner. 这可能是一个括号问题,您必须在IdOwner前面加上前缀。 Be careful to prefix your {0} and {1} parameter : 请注意为您的{0}和{1}参数加上前缀:

SELECT ROW_NUMBER() OVER ( ORDER BY {0} {1} ) AS RowNum, 
       Cars.Id,Cars.Make, Cars.Model, Color.Name 
FROM (Cars INNER JOIN Color ON Cars.ColorId=Color.Id) 
WHERE Cars.IdOwner={2} 

c.Make is specified multiple times and "AS Rows" has been removed and is needed. c.Make被多次指定,“ AS行”已被删除并且是必需的。

SELECT * 
FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY c.Id  ) AS RowNum, 
       c.Id, c.Make, c.Model, d.ColorName 
       FROM Car AS c 
       INNER JOIN Color AS d 
       ON c.ColorId = d.Id WHERE c.IdOwner=1 ) AS Rows
WHERE RowNum > 0 AND RowNum < 11 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM