选择符合条件

时间:2016-05-07 00:28:07

标签: mysql sql

我似乎无法解决一个难题。

我需要选择日期晚于符合特定条件的行的所有行。在表#1中,我有一个状态标志。 1表示错误。 所以在这种情况下,我想选择ValueDate > 2016-02-02的所有行(ID为14的行之后),但仅限于属于同一类别的那些行。

每个类别只能有一行错误标记。

enter image description here

变得有点复杂。我有另一张桌子,桌子#2,文件在哪里。这些文件会不断添加,因此它们可能会替换表#1中的任何错误文件。

我想选择ID 14之后的所有行,只要有可用于ID 14的替换文件(通过验证替换文件的CreateDate晚于错误文件来检查)。

有人能引导我朝正确的方向前进吗?

表#1的列:id,file,status

表#2的列:id,category,CreateDate,ValueDate

2 个答案:

答案 0 :(得分:1)

您可以使用google.maps.event.trigger(map, 'resize');子句中的子查询来执行此操作:

where

您可以将此作为select t.* from t where t.date >= (select min(t2.date) from t2 where t2.category = t.category and t2.status = 1 ); 和聚合:

执行此操作
join

答案 1 :(得分:0)

我不确定您是否要求两个或一个查询。我会给你两个问题,并告诉我这不是你想要的答案。

第一个:

  

我想选择ValueDate>的所有行2016-02-02(排后   ID为14),但仅适用于属于同一类别的那些行。

SELECT * FROM TableALL A
WHERE A.ValueDate > (SELECT max(B.ValueDate) FROM TableALL B
                     WHERE B.category=A.category 
                       AND status=1)

第二个:

  

我想在ID 14之后选择所有行,只有在有替换时才会这样做   文件可用于ID 14(通过验证确认   替换文件的CreateDate晚于错误文件。

SELECT A.* FROM Table1 A, Table2 B
WHERE B.CreateDate > (SELECT max(Y.ValueDate) 
                      FROM Table1 Z,Table2 Y 
                      WHERE Z.id=Y.id 
                       AND Y.category = B.category  // I thought you  
                                                    // need it here too
                       AND status=1)
 AND A.id=B.id