MySQL - 选择大于时间戳和特定UUID的行?

时间:2018-04-21 01:13:04

标签: mysql

我似乎无法从以下查询中获取下表中**标记行上方的4行:

SELECT * from table 
WHERE created_at > '2018-04-19 23:56:35' 
  AND id = '01H5E4sUTlwV2yk2cdGlodr3MBf8acABsfBb'

| id                                    | title        | created_at
-----------------------------------------------------------------------
| 001w2cwfoqzp8F3Gf6jCwITgNRtvHiBvmdwb  | My Post      | 2018-04-20 02:43:20
| 0CVgGz5kUESVJmG4LYIFW2EHtjzKnEClfoPR  | My Post      | 2018-04-19 23:56:35
| 0A1O9Vjg6GwrcNBzi46zxbysSuRIDeIXKMku  | My Post      | 2018-04-19 23:56:35
| 03mMiy5iQ3sGD8efpTArxvaqakoQkG21WC2r  | My Post      | 2018-04-19 23:56:35
**| 01H5E4sUTlwV2yk2cdGlodr3MBf8acABsfBb  | My Post      | 2018-04-19 23:56:35
| 01Rm9WTLkcce5qcRLBWlpwIALItKMixnjhu6  | My Post      | 2018-04-19 23:56:35
| 03bBfzdaXCc13lLVIOjgCvYUUl3bKtkaz1za  | My Post      | 2018-04-19 23:56:35
| 01A3ulgrx3rvH5nB5DdzYNe8CBc8vf7rEjWJ  | My Post      | 2018-04-19 23:56:34
| 00Ipdlt48PPzgERSOXbloi71qYTUB5ulHifR  | My Post      | 2018-04-19 23:56:34
| 02klLu3OfyDYmlEgN7usy2esHVV1UUJF65FP  | My Post      | 2018-04-19 23:56:34
| 04WXSHIUVLhsbjwMAa78aW7rw6nYUV8HTusN  | My Post      | 2018-04-19 23:56:34

我知道如果它是整数而不是id,可以在uuid上轻松完成。但有没有办法用uuidtimestamp组合来完成它,因为我的查询没有返回任何行?

2 个答案:

答案 0 :(得分:2)

这个怎么样:

SELECT * from table 
WHERE created_at > '2018-04-19 23:56:35' 
  OR id = '01H5E4sUTlwV2yk2cdGlodr3MBf8acABsfBb'

(用OR替换AND。)

AND只匹配满足所有要求的行,即满足AND左侧表达式的行,同时满足表达式AND的右侧。只有一行满足AND右侧的要求,即您正在测试的给定id的行。所以,如果你不清楚这一点,那么你需要梳理一下布尔代数的基础知识。

答案 1 :(得分:1)

表达式'2018-04-19 23:56:35' > '2018-04-19 23:56:35'总是假的。这是因为2018-04-19 23:56:35等于2018-04-19 23:56:35并且永远不会超过自身,请尝试这样做:

SELECT * from table 
WHERE created_at >= '2018-04-19 23:56:35' 

您需要大于或等于运算符>=,而不是大于运算符>

你不需要WHERE caluse中的id字段,因为它似乎是一个具有唯一值的列,假设你在该列上有唯一索引,它总是只返回一个记录。