我有2张桌子。 table1
有主要记录。 table2
是具有table1.id
的多个条目的从属表。有些条目可能是空白的。
首先如果设置table2.data
并且日期没有过去,那么当我连接2个表时,我必须得到该记录。如果没有table2.data
没有空值且日期未过去的记录,则从table2
获取上次更新的记录,table2.data IS NULL
。
我需要一个查询来获取NOT NULL或NULL记录。
表1
id name date
1 Abc 2013-12-09
2 Test 2014-12-09
3 Xyz 2012-02-10
表2
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
如果我加入2个表,我的结果应该是,当我通过user_id = 2
结果
id user_id data
1 2 NULL
答案 0 :(得分:1)
这是一个有根据的猜测。你的描述太模糊了。
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
中是唯一的,或者您需要其他排序条件。