gpt4 book ai didi

mysql 按字段值优先

转载 作者:行者123 更新时间:2023-11-29 12:06:18 25 4
gpt4 key购买 nike

好的,我有一个包含字段的表

Table: comments
id (primary key, increment, int)
post_id(foreign key, int)
user_id (foreign key, int)
content (text)
timestamp

Data
1, 1, 1, hello, timestamp
2, 3, 4, 123, timestamp
3, 1, 5, 1245, timestamp
4, 1, 8, test, timestamp
5, 1, 10, hi, timestamp
6, 3, 1, this is 3, timestamp

即使我按时间戳排序,如何选​​择结果中包含 user_id 1 的 5 个结果?

让我们考虑一下数据集,最低行 (5) 具有最新的时间戳,而 1 具有最旧的时间戳。

我需要将 id 1(用户 id 1)包含在限制 5 中,即使它的时间戳最旧。

预期返回的行 ID:

1, 5, 4

不是

5, 4, 3

我想出的 SQL 不起作用:

SELECT id FROM comments WHERE post_id = 1 ORDER BY user_id = 1, timestamp DESC DESC LIMIT 3

我该怎么做

最佳答案

您可以通过user_id = 1订购:

SELECT stuff
FROM comments
ORDER BY user_id = 1 DESC, timestamp DESC
LIMIT 3

其工作原理如下:order by 子句:对于第一个 ID,user_id = 1 将被评估为 true(或者对 1 更可见),而 false (或 0)用于其他行,因为它们具有其他 user_id。因此,您有一个带有 01 的虚构字段,它们按 DESC 排序,返回

+----+------+-------------+------------------------+
| id | user | user_id = 1 | timestamp |
+----+------+-------------+------------------------+
| 1 | 1 | 1 | oldest timestamp |
| 5 | 10 | 0 | newest timestamp |
| 4 | 8 | 0 | some timestamp between |
+----+------+-------------+------------------------+

关于mysql 按字段值优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31423619/

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