簡體   English   中英

限制結果在 MySQL 中?

[英]LIMIT results in MySQL?

好的; 這已經讓我的大腦炸了幾個小時。 我想我可能需要一個子查詢,但我在這種事情上並不那么先進,所以任何正確方向的幫助或指示都將不勝感激。

這是我的查詢....

$query = "SELECT * FROM events WHERE event_type = 'Christmas Listings' AND event_active='Yes' ORDER BY event_date ASC LIMIT 5";
$result= mysql_query($query); 

好的......現在我想要實現的簡單英語位(以了解我想要實現的目標):

  1. 我想檢查事件類型 (' event_type ') 是我得到的(即聖誕節列表),因為此列中有多種類型。

  2. 我想檢查事件是否處於活動狀態(' event_active ')是是(該字段中的數據是是/否)。

  3. 我想按 (' event_date ') ASC(此字段中的數據為yyyy-mm-dd )對它們進行排序,因此它們會按日期顯示來自數據庫的最新條目。

  4. 當通過 WHILE 語句運行此類查詢時,我想限制(或以某種方式控制輸出)結果只顯示 5 個結果。

好的,這一切正常,但是; 當我進入實際的輸出顯示時,我在實際顯示的結果數量上有一個不穩定的輸出......如果我有多個關閉的事件會發生什么,如event_active是“ Off ”那么它幾乎就像參數是從所有結果(包括event_active='Off' )計算的,因此沒有顯示我希望它們如何顯示?

希望這是有道理的......任何幫助將不勝感激。

SELECT * 
FROM events 
WHERE event_type = 'Christmas Listings' AND event_active='Yes' 
ORDER BY event_date 
LIMIT 0, 5

所以你的陳述更容易閱讀..

  1. 你應該使用 1 / 0 而不是 Yes / no
  2. 限制不計算所有行! 第一步 - 執行包括 WHERE 在內的查詢 第二步 - ORDER BY 第三步 - LIMIT 如果您在排序的列上設置了索引。 排序將在 5 行后停止,也意味着 - 它變得更快
  3. ORDER BY 命令中的 ASC 不是必需的,因為 ASC 是默認的

我真的不確定你在問什么,但LIMIT工作原理如下:

LIMIT表示在您的查詢完成並處理所有WHERE語句后,僅返回前 5 個。

所有的結果,其中event_active不是“是”將不會被顯示,並在一切都忽略不計。

此結果與您在沒有限制的情況下進行查詢的結果相同,只需查看前 5 行。

那個查詢應該沒問題。 我會檢查您的數據集(或者甚至更好,發布它!)。 您可能還想研究規范化數據庫。 它會在未來幫助你。

我認為問題在於您的“event_active”。

MySQL 使用 0 和 1 來表示該字段是否為真/假、是/否、開/關。 嘗試在 SELECT 語句中使用 0 和 1,除非該字段上的字段類型是 VARCHAR 並且您實際上正在使用這些詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM