繁体   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