Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL限制1但查询15行?_Php_Mysql_Limit - Fatal编程技术网

Php MySQL限制1但查询15行?

Php MySQL限制1但查询15行?,php,mysql,limit,Php,Mysql,Limit,基本上,我要做的是将行的ID与MySQL中的15个结果进行比较,消除除1之外的所有结果(使用而不是),然后提取该结果 现在通常情况下,这本身就可以了,但是我正在执行SQL查询的15行的顺序会根据排名不断变化,因此在排名更新和ajax请求(我提交的ID为不在中)之间,可能不止一个ID发生了变化,这当然会带来不止一排我不想要的 简而言之,有没有一种方法可以查询15行,但只返回一行?无需运行两个单独的查询。非常感谢您的帮助,谢谢 例如: 假设我的数据库中有7项,我在页面上向用户显示了5项 以下是向用户

基本上,我要做的是将行的ID与MySQL中的15个结果进行比较,消除除1之外的所有结果(使用
而不是
),然后提取该结果

现在通常情况下,这本身就可以了,但是我正在执行SQL查询的15行的顺序会根据排名不断变化,因此在排名更新和ajax请求(我提交的ID为
不在
中)之间,可能不止一个ID发生了变化,这当然会带来不止一排我不想要的

简而言之,有没有一种方法可以查询15行,但只返回一行?无需运行两个单独的查询。非常感谢您的帮助,谢谢

例如:

假设我的数据库中有7项,我在页面上向用户显示了5项

以下是向用户显示的内容:

Apple
Orange
Kiwi
Banana
Grape
但在数据库里我也有

Peach
Blackberry
现在我想做的是,如果用户从他们的列表中删除一个项目,它将添加另一个项目(基于他们的排名)

现在的问题是,为了知道他们的名单上有什么,我把剩下的项目发送到数据库(假设他们删除了猕猴桃,我会发送苹果、橘子、香蕉和葡萄)

因此,现在我从剩下的六个项目中选择排名最高的5个项目,确保它们不是页面上已经显示的项目,然后将新项目添加到列表中(Peach或Blackberry)

一切都很好,除了如果桃子和黑莓现在的排名都超过葡萄,那么我将返回两个结果,而不仅仅是一个。因为它会质疑

Apple
Orange
Banana
Peach
Blackberry
并排除

Apple
Orange
Banana
Grape

这就给我们留下了Peach和Blackberry,而不仅仅是Peach或Blackberry,这取决于您试图做什么(最好看一个例子),它可以通过嵌套查询来完成。查看此

根据您尝试执行的操作(最好看一个示例),可以通过嵌套查询来完成。参见此

我不确定自己是否完全理解这些要求,但我会尝试一下。下面的示例基于我的理解,它假设您只想显示顶部的五行

SELECT
  UL.ItemName
FROM
  UserList UL
WHERE
  (UL.Deleted = 0) -- Take only items that are NOT deleted

UNION -- UNION clause discards duplicate entries, unlike UNION ALL

SELECT
  I.ItemName
FROM
  (SELECT
    IL.ItemName
  FROM
    ItemList IL -- This is the table containing ALL Items
  ORDER BY
    IL.Ranking ASC -- Most important Items first, supposing that a lower number in Ranking means higher priority
  ) AS I
LIMIT 5 -- Display only top five entries

注意:此查询未经测试,很可能它不会总是以正确的顺序返回项目,因为它缺少order BY子句。因此,它应该作为一个建议,而不是一个完整的解决方案。

我不确定我是否完全理解这些要求,但我会尝试一下。下面的示例基于我的理解,它假设您只想显示顶部的五行

SELECT
  UL.ItemName
FROM
  UserList UL
WHERE
  (UL.Deleted = 0) -- Take only items that are NOT deleted

UNION -- UNION clause discards duplicate entries, unlike UNION ALL

SELECT
  I.ItemName
FROM
  (SELECT
    IL.ItemName
  FROM
    ItemList IL -- This is the table containing ALL Items
  ORDER BY
    IL.Ranking ASC -- Most important Items first, supposing that a lower number in Ranking means higher priority
  ) AS I
LIMIT 5 -- Display only top five entries

注意:此查询未经测试,很可能它不会总是以正确的顺序返回项目,因为它缺少order BY子句。因此,它应该被视为一个建议,而不是一个完整的解决方案。

您能举一个例子说明您正在尝试做什么吗?我想这会让问题变得更清楚。好吧,我举了一个例子来尽可能清楚地说明问题。你能举一个例子来说明你在做什么吗?我想这会让问题变得更清楚。好吧,我举了一个例子来尽可能清楚地说明这一点