SQL Server Flrutom LIMIt känner jag bara till kommando LIMIT i MySQL: <citat> Där fick jag lära mig något jag inte visste. Tackar för uplyssningen. ;o)Between istället för Top?
MySQL
Access
Man kan ju välja ett visst antal rader från toppen en frågas resultat med :
<code>
SELECT TOP #, * FROM table
</code>
Men om man vill välja en serie rader någonstans mitt i typ:
<code>
SELECT BETWEEN # AND #, * FROM table
</code>
(felaktig kod, endast för att beskriva vad jag vill göra)
Hur gör man? (Främst intresserad av en lösning för MS SQL-server, men är även intresserad för MySQL och Access då jag jobbar med dessa med ibland)Sv: Between istället för Top?
[LIMIT [offset,] row_count | row_count OFFSET offset]
The LIMIT clause can be used to constrain the number of rows returned by the SELECT statement. LIMIT takes one or two numeric arguments, which must be integer constants. With two arguments, the first argument specifies the offset of the first row to return, and the second specifies the maximum number of rows to return. The offset of the initial row is 0 (not 1):
http://www.mysql.com/doc/en/SELECT.html
Fast du kan ju med TOP, vilket till för SQL standarden.
Här är ett exempel som plockar ut post 15 till 25.
<code>
SELECT Orders.*
FROM Orders
WHERE Orders.OrderID BETWEEN
(SELECT Max(OrderID)
FROM
(SELECT TOP 15 Orders.OrderID
FROM Orders
ORDER BY Orders.OrderID)) AND
(SELECT Max(OrderID)
FROM
(SELECT TOP 25 Orders.OrderID
FROM Orders
ORDER BY Orders.OrderID))
</code>
Tänk på följande:
Om antalet poster som retuneras är mindre än intervallet har du paserat intervallet. Om antalet poster är = 1 och intervallet > 1 är du utanför intervallet.
<code>
SELECT Orders.*
FROM Orders
WHERE Orders.OrderID BETWEEN
(SELECT Max(OrderID)
FROM
(SELECT TOP 15 Orders.OrderID
FROM Orders
ORDER BY Orders.OrderID)) AND
(SELECT Max(OrderID)
FROM
(SELECT TOP 25 Orders.OrderID
FROM Orders
ORDER BY Orders.OrderID))
</code>Sv: Between istället för Top?
Fast du kan ju med TOP, vilket till för SQL standarden
</citat>
TOP ingår inte i SQL-standarden. (Om det nu är det du avser med ovanstående.)Sv: Between istället för Top?