Ste*_*hen 1 mysql sql select timestamp left-join
我有两个表:
1.tableA是一个包含许多列的记录列表.有一个名为"created"的时间戳列
2. tableB用于跟踪我的应用程序中已锁定tableA中的记录以供审阅的用户.它由四列组成:id,user_id,record_id和另一个时间戳列.
我正在尝试从tableA中选择最多10条记录,这些记录尚未被tableB中的任何人锁定以供查看(我还在tableA中的一些其他列中过滤WHERE子句,如记录状态).这是我到目前为止所提出的:
SELECT tableA.* FROM tableA
LEFT OUTER JOIN tableB ON tableA.id = tableB.record_id WHERE
tableB.id = NULL AND
tableA.status = 'new' AND
tableA.project != 'someproject' AND
tableA.created BETWEEN '1999-01-01 00:00:00' AND '2010-05-06 23:59:59'
ORDER BY tableA.created ASC LIMIT 0, 10;
Run Code Online (Sandbox Code Playgroud)
tableA中目前有几千条记录,tableB中有零条记录.肯定有这些时间戳之间的记录,我用简单的方法验证了这一点
SELECT * FROM tableA WHERE
created BETWEEN '1999-01-01 00:00:00' AND '2010-05-06 23:59:59'
Run Code Online (Sandbox Code Playgroud)
上面的第一个语句返回零行,第二个语句返回超过2,000行.
tableB.id = NULL
Run Code Online (Sandbox Code Playgroud)
应该
tableB.id IS NULL
Run Code Online (Sandbox Code Playgroud)
它永远不会是真的(也不是假的.NULL = NULL计算为未知,因此tableB.id <> NULL同样不会返回任何结果).
请参阅http://dev.mysql.com/doc/refman/5.0/en/working-with-null.html,为什么NULL = NULL在SQL Server中评估为false