LIMIT导致MySQL?

时间:2012-01-25 18:58:17

标签: php mysql limit

确定;这已经煎了我几个小时。我想我可能需要一个子查询,但我不是那种先进的,所以任何帮助或指向正确方向的人都会非常感激。

这是我的查询......

$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)对它们进行排序,以便它们按日期显示DB中的最新条目。 / p>

  4. 我希望LIMIT(或以某种方式控制输出)结果在通过WHILE语句运行此类查询时仅显示5个结果。

  5. 好的,这一切都可以,但是;当我到达实际的输出显示时,我实际显示的结果有多少输出...如果我有多个事件被关闭,会发生什么,如event_active中的Off 1}}'那么它几乎就像参数是从所有结果中计算出来的(包括event_active='Off')因此没有显示我期望它们如何显示?

    希望这是有道理的......任何帮助都会感激不尽。

4 个答案:

答案 0 :(得分:2)

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

所以你的陈述更容易阅读..

  1. 你应该使用1/0而不是是/否
  2. 限制不计算所有行! 第一步 - 执行包含WHERE的查询 第二步 - ORDER BY 第三步 - 限制 如果您在排序的列上设置了索引。排序将在5行后停止, 也意味着 - 它变得更快
  3. ORDER BY命令中的ASC不是必需的,因为ASC是默认的

答案 1 :(得分:1)

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

LIMIT表示在查询完成后,处理了所有WHERE语句,只返回前5个语句。

不会显示event_active不是“是”的ALl结果,并且在所有内容中都会被忽略。

此结果与没有限制的查询结果相同,只需查看前5行。

答案 2 :(得分:0)

该查询应该没问题。我检查你的数据集(甚至更好,发布它!)。您可能还想查看规范化数据库。它将来会帮助你。

答案 3 :(得分:0)

我认为问题在于你的'event_active'。

MySQL使用0和1来指示该字段是真/假,是/否,开/关。尝试在SELECT语句中使用0和1,除非该字段上的字段类型是VARCHAR,并且您实际上正在使用这些单词。