Php 使用PDO设置限制时忽略数据库副本
我想在设置“限制0,50”,然后设置“限制50,50”,然后设置限制时忽略数据库中的重复项。。。。。我只需要扫描表中1列的重复项,而不是一次扫描所有列。我不能合并副本,因为它们在某种程度上是不同的:这些副本有不同的价格 更准确地说,我需要显示这些项目的列表,但要在右侧显示它们的不同价格 我需要一个精确的数字(50)每页,所以我不能加载少于然后转到下一页。因此,我可以从一开始就加载更多内容(如果我在一个较远的页面上,则更改最大偏移量和以前的偏移量),如果我忽略重复的内容,则每页将精确加载50个,并且我将获得最后显示的良好页数 我是一个PHP初学者,我不知道怎么做。也许可以先扫描所有的表,然后开始编写代码,灵活处理扫描的限制变量和所有内容?我需要什么功能?怎么做Php 使用PDO设置限制时忽略数据库副本,php,mysql,pdo,duplicates,limit,Php,Mysql,Pdo,Duplicates,Limit,我想在设置“限制0,50”,然后设置“限制50,50”,然后设置限制时忽略数据库中的重复项。。。。。我只需要扫描表中1列的重复项,而不是一次扫描所有列。我不能合并副本,因为它们在某种程度上是不同的:这些副本有不同的价格 更准确地说,我需要显示这些项目的列表,但要在右侧显示它们的不同价格 我需要一个精确的数字(50)每页,所以我不能加载少于然后转到下一页。因此,我可以从一开始就加载更多内容(如果我在一个较远的页面上,则更改最大偏移量和以前的偏移量),如果我忽略重复的内容,则每页将精确加载50个,并
否则,做一些预先编程或php函数,我不知道它存在可以解决这个问题?或者我真的需要一个headhache xD也许你可以按项目分组,并使用
group_CONCAT
显示不同的价目表?这样,您仍然可以使用限制50
。如果价格列是数字列,请将其转换为VCHAR。我不完全确定您的要求,但我认为您可能希望按照以下内容进行汇总陈述:
select
itemID,
group_concat(itemPrice)
from
yourTable
group by
itemID
limit 50
这将返回一个包含50个项目的列表和第二列,其中所有价格都分组在一起。然后在PHP代码中,您可以将第二列保持原样
编辑:如果选择每个字段,则不能使用聚合函数。如果要选择其他不会不同的列,请将它们添加到select和group by部分,如下所示:
select
itemID,
itemName,
itemSomething,
itemSomethingElse,
group_concat(itemPrice)
from
yourTable
group by
itemID,
itemName,
itemSomething,
itemSomethingElse
limit 50
我承认我从其他答案中借用了
group\u concat()
函数:)
在阅读本段后:
假设下表(testdb.test
):
您可以将此表分页为行(9行)或组(3组,基于项目名称)
如果要根据项目组对项目进行分页,这将有助于:
SELECT
name, group_concat(price)
FROM
testdb.test
GROUP BY name
LIMIT 1 , 3
UNION SELECT
name, group_concat(price)
FROM
testdb.test
GROUP BY name
LIMIT 0 , 3; -- Constant 0, range is the same as the first limit's
SELECT
name, price
FROM
testdb.test
LIMIT 1 , 5
UNION SELECT
name, price
FROM
testdb.test
LIMIT 0 , 5; -- Constant 0, range is the same as the first limit's
如果您希望根据所有项目对您的项目进行分页(我不认为这是您所要求的,但只是为了防止它对其他人有帮助),这应该会有帮助:
SELECT
name, group_concat(price)
FROM
testdb.test
GROUP BY name
LIMIT 1 , 3
UNION SELECT
name, group_concat(price)
FROM
testdb.test
GROUP BY name
LIMIT 0 , 3; -- Constant 0, range is the same as the first limit's
SELECT
name, price
FROM
testdb.test
LIMIT 1 , 5
UNION SELECT
name, price
FROM
testdb.test
LIMIT 0 , 5; -- Constant 0, range is the same as the first limit's
需要注意的一件非常重要的事情是如何修改限制。第一个限制是你的关键,你可以从你想要的任何限制开始,只要我可以这样选择:选择*,group_concat(itemPrice),而“*”已经包括了“itemPrice”,我直接在group_concat()之后设置了它?我不太清楚你的意思。您刚才编写的查询似乎没有意义。“问题”是什么意思?我刚刚编辑了我的帖子,堆栈溢出将我的“*”符号更改为“”(什么都并没有)不,你们不能这样做。为您添加对我的帖子的编辑。