我有一个表,其中的项目是一个线程的一部分,因此它们有一个线程ID,每个项目也有一个日期(UNIX时间戳).所以我的表看起来像(UNIX时间戳简化):
+-----------------------------+
| id | date | thread_id |
+-----+---------+-------------+
| 1 | 1111 | 4 |
| 2 | 1333 | 4 |
| 3 | 1444 | 5 |
| 4 | 1666 | 5 |
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
我想要做的是选择线程ID,其中共享相同线程ID的所有项都小于传递的日期.因此,如果我想要所有项目早于1555(日期<1555)的线程ID,我只会期望返回线程ID 4,而不是5,即使它有一个日期小于1555的项目.所以这就是我尝试:
SELECT * FROM table WHERE date < 1555 GROUP BY thread_id ORDER BY date DESC
Run Code Online (Sandbox Code Playgroud)
我正在尝试对该查询执行的操作是按照具有最高日期值的项目的线程ID对所有项目进行分组,并从那里获取日期小于1555的项目.但是这不起作用,它仍将返回线程ID 5,因为它有一个超过1555的项目.
总而言之,我如何只选择所有项目都比特定日期更早的线程ID?
感谢您的时间!
我正在尝试从关联表中选择满足两个或更多相同字段值的项目,听起来令人困惑,让我解释一下.
+-----------------------+
| item_id | category_id |
+-----------------------+
| 1 | 200 |
| 1 | 201 |
| 1 | 202 |
| 2 | 201 |
| 2 | 202 |
| 3 | 202 |
| 3 | 203 |
| 4 | 201 |
| 4 | 207 |
+-----------------------+
Run Code Online (Sandbox Code Playgroud)
在表格中,我希望只能选择我通过的类别中的项目.因此,例如,如果我传递201和202的类别ID,我只想要两个类别的项目(它们可以有其他类别,但至少需要在我查询的类别中),所以在这种情况下,我只想要第1项和第2项,因为它们是201和202类别中唯一的项目.
我最初的SQL语句是这样的
SELECT * FROM item_category WHERE category_id = 201 AND category_id = 202;
Run Code Online (Sandbox Code Playgroud)
但显然这不起作用.
SELECT * FROM item_category WHERE category_id = 201 OR category_id = …Run Code Online (Sandbox Code Playgroud) 我一直在寻找解决方案,但没有取得真正的成功.我有一个多维的父母和孩子阵列,对深度没有限制.这是从数据库生成的,但问题是项目ID成为关键,使用我的方式将平面数组排列成多维数组,如下所示:
Array(
[28] => Array
(
[id] => 28
[color] => #ff24e5
[name] => Personal
[parent_id] =>
[children] => Array
(
[23] => Array
(
[id] => 23
[color] => #41c3a3
[name] => Shopping
[parent_id] => 28
[children] => Array
(
[22] => Array
(
[id] => 22
[color] => #8be32b
[name] => Deals
[parent_id] => 23
[children] => Array
(
)
)
)
)
[150] => Array
(
[id] => 150
[color] => #e9a3f0
[name] => Orders
[parent_id] => …Run Code Online (Sandbox Code Playgroud) 我想知道是否有一个 Graphite 函数或一种获得高于某个值的点数的方法。假设我同时有 2,44,24,522,52,534 并且我想获得超过 40 的点数,在这种情况下它将是 3。有什么提示吗?
谢谢