gpt4 book ai didi

mysql - SQL获取特定ID前后的行

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:38 24 4
gpt4 key购买 nike

我有这样的查询:

    $query = "SELECT * FROM `press`"
." WHERE "SOME CONDITONS
." GROUP BY `pressID`"
." ORDER BY `date` DESC"
.";";

此查询返回一个按日期排序的新闻数组。

我需要修改此查询以在(两个查询,每个查询)特定 ID 之前和之后仅获得一次按下,id 字段为 pressID

有什么想法吗?

我可以在查询后通过特定处理来做到这一点,但我认为直接在查询中这样做会更好。

谢谢!

编辑:

我的查询返回一个有序的数据数组,如:

array(XXX) {
[0]=>
array(XXX) {
["pressID"]=> string(4) "1811"
},
[1]=>
array(XXX) {
["pressID"]=> string(3) "450"
}
,
[2]=>
array(XXX) {
["pressID"]=> string(1) "3"
}
......
}

我需要修改此查询(或创建一个新查询)以仅获取特定 ID 之前的元素,并在第二个查询中获取特定 ID 之后的元素。

如果我有 id=450,我需要使用 id=1811 获取前查询 press,并使用 id=3 获取后查询 press。

最佳答案

如果你只想要前后两行,而不想要中间那一行,也许是这样的?获取大于特定 id 的最小 id 和小于特定 id 的最大 id:

$query = "SELECT * FROM `press`"
." WHERE pressID = (SELECT MIN(pressID) FROM `press` WHERE pressID > specificID)"
." OR pressID = (SELECT MAX(pressID) FROM `press` WHERE pressID < specificID)"
." GROUP BY `date`"
." ORDER BY `date` DESC"
.";";

编辑:因为您按日期订购:

SELECT * FROM press
WHERE date = (
SELECT MIN(date) FROM press
WHERE
date > (SELECT date FROM press WHERE pressID = specific_id)
)
OR date = (
SELECT MAX(date) FROM press
WHERE
date < (SELECT date FROM press WHERE pressID = specific_id)
)
GROUP BY date
ORDER BY date;

关于mysql - SQL获取特定ID前后的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32228915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com