我有2个表。table1
有主记录。table2
是table1.id
的从表,有多个表项。有些条目可能是空的。
首先,如果设置了table2.data
并且日期没有过去,那么当我执行2个表的连接时,我必须获得该记录。如果没有table2.data
不为空值且日期不是过去的记录,则从table2
中获取table2.data IS NULL
的最后更新记录。
我需要一个单一的查询来获取NOT NULL或NULL记录。
Table1
id name date
1 Abc 2013-12-09
2 Test 2014-12-09
3 Xyz 2012-02-10
表
id user_id data
1 1 test
2 1 NULL
3 2 NULL
4 3 blah blah.....
如果我连接2个表,我的结果应该是这样的,当我通过user_id = 1
和比较日期作为今天的日期
id user_id data
1 1 NULL
如果我连接两个表,我的结果应该是这样的,当我传递user_id = 2
id user_id data
1 2 NULL
这是有根据的猜测。你的描述太模糊了。
SELECT DISTINCT ON (t2.user_id)
*
FROM table1 t1
JOIN table2 t2 ON t2.user_id = t1.id
WHERE t1.date > current_date
ORDER BY t2.user_id, t2.data DESC NULLS LAST
假设:
-
table2.user_id
对应table1.id
- 您只需要
table1.date
是未来日期的行。 -
(user_id, data)
在table2
中是唯一的,或者需要额外的排序标准。