读书人

这条SQL语句如何写才对啊

发布时间: 2013-09-05 16:02:07 作者: rapoo

这条SQL语句怎么写才对啊?

select *,Row_Number() over(order by id)as Row
from
(
select id,title,[content] from t_news where title like '%童丽%'
union
select id,title,[content] from t_news where [content] like '%童丽%'
)t
where Row between 3 and 5



列名 'Row' 无效。

是不是因为表t中没有Row列的原因?
该怎么改呢?
[解决办法]
SELECT * FROM
(
select *,Row_Number() over(order by id)as Rowid
from
(
select id,title,[content] from t_news where title like '%童丽%'
union
select id,title,[content] from t_news where [content] like '%童丽%'
) t
) m
where Rowid between 3 and 5

[解决办法]
--你说的对。是因为表t中没有Row列的原因。参考如下(select的步骤是8,where是4,会在select之前执行,这时where中是看不到row这个列的):
--SQL逻辑执行顺序
(8) SELECT (9) DISTINCT (11) <TOP_specification> <select_list>
(1) FROM <left_table>
(3) <join_type> JOIN <right_table>
(2) ON <join_condition>
(4) WHERE <where_condition>
(5) GROUP BY <group_by_list>
(6) WITH {CUBE
[解决办法]
ROLLUP}
(7) HAVING <having_condition>
(10)ORDER BY <order_by_list>
[解决办法]
简化

select *
from
(select id,title,[content],Row_Number() over(order by id)as Row
from t_news
where title like '%童丽%' or [content] like '%童丽%'
)t
where Row between 3 and 5

读书人网 >SQL Server

热点推荐