2012-05-03 16 views
13

Duplicar posible:
How to write a (MySQL) “LIMIT” in SQL Server?¿Cuál es el equivalente de T-SQL de la sintaxis de MySQL LIMIT x, y?

¿Cómo puedo cambiar mi consulta con el límite del interior de un SQL-Server?

Código:

SELECT apretiz FROM tableApoint WHERE price = '$newprice' LIMIT 5; 

Muchas cosas no están funcionando por lo que acaba de pedir ayuda

y cómo puedo cambiar el límite de 5,10 con el ejemplo? ¿No puedo usar TOP para eso?

+0

Editado por un límite de 5,10 – pretyBoy

+0

Ninguno de las respuestas a continuación muestran la sintaxis de 'SELECT *', entonces aquí está: 'SELECT TOP (5) * FROM [TableName]' – K48

Respuesta

14

Como dije hace menos de una hora, ¡tienes que usar TOP! (LIMIT se utiliza para MYSQL)

Intente eliminar LIMIT 5 y SELECT TOP(5) apretiz.

Además, intente agregar orden por (la misma razón que antes).

Haga una búsqueda antes de preguntar cosas. Link to old question

3

Utilice la palabra clave TOP:

SELECT TOP 5 pretiz 
FROM tableApoint WHERE price = '$newprice' 

Usando LÍMITE 5, 10 no es parte del estándar SQL y sólo está disponible en MySQL.

Puede usar ROW_NUMBER() para SQL como una solución temporal y obtendrá el mismo resultado deseado.

SELECT * FROM ( 
    SELECT *, ROW_NUMBER() OVER (ORDER BY name) as row FROM tableApoint 
) a WHERE row >= 5 and row <= 10 
2

SQL Server 2005 y por encima de

Si está utilizando SQL Server 2005 y anterior, se puede utilizar ROW_NUMBER función para asignar números únicos a sus filas y luego escoger el rango de valores de la salida.

Guión:

CREATE TABLE table1 
(
    textvalue VARCHAR(10) NOT NULL 
); 

INSERT INTO table1 (textvalue) VALUES 
    ('i'), 
    ('a'), 
    ('e'), 
    ('h'), 
    ('c'), 
    ('l'), 
    ('g'), 
    ('m'), 
    ('d'), 
    ('k'), 
    ('j'), 
    ('f'), 
    ('b'), 
    ('n'); 

;WITH letters as 
(
    SELECT textvalue 
     , ROW_NUMBER() OVER(ORDER BY textvalue) rownum 
    FROM table1 
) 
SELECT textvalue 
FROM letters 
WHERE rownum BETWEEN 6 AND 10; 

de salida:

TEXTVALUE 
--------- 
    f 
    g 
    h 
    i 
    j 
16

A partir de SQL Server 2012, puede escribir

... 
ORDER BY thisColumn, thatColumn 
OFFSET 5 ROWS FETCH NEXT 5 ROWS ONLY 
Cuestiones relacionadas