0

在我的数据库中有一个名为talltree_master. 我只想显示那些tree_no field从一开始就没有被阉割的记录()。dtlastemas字段跟踪去雄日期,talltree_id是表的主键talltree_master。例如。考虑以下数据

tree_no | talltree_id |dtlastemas

1       |      1      |    2008-01-09                 
2       |      2      |                 
3       |      3      |    2010-05-06
4       |      4      |                       
1       |      5      |               
5       |      6      |    2001-02-06
2       |      7      |    2009-05-03                   
3       |      8      |    2010-01-01           
6       |      9      |              

注意:空白表示在去雄完成时特定树尚未去雄。我想显示的只是 tree_no 4 和 6,因为这些是唯一从一开始就没有被阉割的树,而 tree_no 1 和 2 之前已经被阉割过。但下面的查询显示tree_no1、2、4 和 6。如何修改 where 条件,以便获得正确的输出。

string query = "select tree_no from talltree_master";
       query += " where dtlastemas is NULL";
4

2 回答 2

0

您想要那些dtlastemas为 null 的记录,而这些记录从未有过dtlastemas不为 null 的记录。像这样的东西:

select tree_no
from talltree_master o
where o.dtlastemas is null
    and not exists (
        select *
        from talltree_master i
        where i.tree_no = o.tree_no
              and dtlastemas is not null)

SQL 小提琴:http ://sqlfiddle.com/#!3/371db/6

于 2013-09-23T16:49:29.277 回答
0
SELECT tree_no, MAX(dtlastemas)
FROM talltree_master
WHERE MAX(dtlastemas) IS NULL
GROUP BY tree_no
于 2013-09-23T16:49:45.623 回答