在 PostgreSQL 服务器上,我有一个如下所示的表格:
+------+------+------------------+
| Code | kind| timestamp |
+------+------+------------------+
| 1 | I | 16-05-2011 09:17 |
| 1 | O | 16-05-2011 09:47 |
| 2 | I | 16-05-2011 09:37 |
| 3 | I | 16-05-2011 11:26 |
| 3 | O | 16-05-2011 12:11 |
| 3 | I | 16-05-2011 13:23 |
+------+------+------------------+
此表表示池中人员的 IN 和 OUT 以及相对时间戳,我想知道在给定时刻池中的人员。
有没有办法检索没有相应“O”的种类“I”的行? 我可以用一个查询来完成吗?
代码代表人代码...
最佳答案
LEFT JOIN 是一种方法
SELECT
t.Code,
t.kind,
t.timestamp
FROM table t
LEFT JOIN table t2
ON t.code = t2.code
AND t.kind = 'I'
AND t2.kind = 'O'
WHERE t2.code IS NULL
Not Exists 也应该可行
关于SQL 选择具有较高时间戳值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6023831/