PHP中的SQL查询(WordPress)
我需要PHP WordPress中SQL查询的帮助。 我有以下数据:PHP中的SQL查询(WordPress),php,sql,wordpress,Php,Sql,Wordpress,我需要PHP WordPress中SQL查询的帮助。 我有以下数据: | id | kw_id | date | position | 1 | 1 | 2020.08.23 | 16 | | 2 | 1 | 2020.10.02 | 17 | | 3 | 2 | 2020.10.08 | 5 | | 4 | 2 | 2020.10.08 | 6 | 我需要得到两行id=2,id=3。 查询标准有
| id | kw_id | date | position
| 1 | 1 | 2020.08.23 | 16 |
| 2 | 1 | 2020.10.02 | 17 |
| 3 | 2 | 2020.10.08 | 5 |
| 4 | 2 | 2020.10.08 | 6 |
我需要得到两行id=2,id=3。
查询标准有两个:
获取具有最大日期的行
按kw\U id分组
当日期具有重复id=3和id=4时,则获取具有最小位置的行
结果必须如下所示:
提前感谢。如果您使用的是MySQL 8+,那么第行提供了一个选项: 以cte为例 选择*,分区上的行号按id顺序按日期描述,位置rn 从你的桌子上 选择id、kw\U id、日期、位置 来自cte 其中rn=1;
上面对ROW_NUMBER的调用将每个id的最新日期放在第一位,而对于日期的关系,则将最小位置放在第一位。对于传统MySQL 5。*这可能有点复杂。下面是返回针id的查询:
select min(id) as min_id
from tbl
join (
select kw_id, max(date) max_date
from tbl
group by kw_id
) tbl1 on tbl1.max_date = tbl.date and tbl1.kw_id = tbl.kw_id
group by tbl.kw_id;
结果:
+========+
| min_id |
+========+
| 2 |
+--------+
| 3 |
+--------+
现在是最后一个问题:
select * from tbl where id in (
select min(id) as min_id
from tbl
join (
select kw_id, max(date) max_date
from tbl
group by kw_id
) tbl1 on tbl1.max_date = tbl.date and tbl1.kw_id = tbl.kw_id
group by tbl.kw_id
);
最后的结果是:
+====+=======+============+==========+
| id | kw_id | date | position |
+====+=======+============+==========+
| 2 | 1 | 2020-10-02 | 17 |
+----+-------+------------+----------+
| 3 | 2 | 2020-10-08 | 5 |
+----+-------+------------+----------+
这里谢谢你的帮助。谢谢。它起作用了。
+====+=======+============+==========+
| id | kw_id | date | position |
+====+=======+============+==========+
| 2 | 1 | 2020-10-02 | 17 |
+----+-------+------------+----------+
| 3 | 2 | 2020-10-08 | 5 |
+----+-------+------------+----------+