2012-01-06 58 views
2

我需要的是類似這樣的兩個查詢:查詢第10行,然後剩餘的行

SELECT * FROM anchors WHERE site_url = '$site_current' 
  • 第一個將查詢前10行
  • 其他人會查詢所有其餘行,從第11行開始

我該怎麼做?

+1

@JamWaffles:這種if查詢正好是用於支持大型結果集的「分頁」的類型。這就是我對這個用例的猜測。 – 2012-01-06 00:40:25

+0

@Paul這是有道理的,但如果你是分頁,那麼你一次只需要(說)10個結果,而不是「10,然後是其餘的」,當然? – Bojangles 2012-01-06 00:42:20

+1

也許,儘管我已經編寫了優化第一頁的分頁系統,因爲這是最常見的情況,但如果他們使用頁面,我只需加載數組的其餘部分並緩存它,因爲它們可能會分頁更多。另一方面,這可能只是一個措辭問題,@webmasters只是沒有說明它被分頁。 – 2012-01-06 00:49:11

回答

6

查詢1:

SELECT * FROM anchors WHERE site_url = '$site_current' LIMIT 10; 


問題2:

SELECT * FROM anchors WHERE site_url = '$site_current' LIMIT 10, 99999999999; 

或(不同的語法但具有相同的效果):

SELECT * FROM anchors WHERE site_url = '$site_current' LIMIT 99999999999 OFFSET 10; 

難以置信,與MySQL你不能t指定偏移量沒有 a li因此,無論使用哪種語法版本,您都必須使用這種延遲的語法來獲得「所有剩餘的行」。

+0

第二個不應該以「LIMIT 10,10」結束嗎? – Bojangles 2012-01-06 00:32:53

+0

@JamWaffles可以是'LIMIT 9999999999 OFFSET 10'或'LIMIT 10,9999999999' - 它們是一樣的 – Bohemian 2012-01-06 00:36:14

+0

對不起,我看錯了這個問題;你是對的。 – Bojangles 2012-01-06 00:37:54