时间:2011-02-20 09:22:35

标签: sql mysql

这可以在一个查询中完成吗?

这是我的数据库结构:

ID    PRICE    DATE                    CODE
1     23       2011-02-01 23:23:23     AAA
2     23       2011-02-04 22:01:01     BBB
3     25       2011-02-05 00:00:01     AAA
4     21       2011-01-09 00:00:00     BBB
5     20       2011-02-09 00:00:00     BBB

我正在尝试构建一个SQL查询,该查询将生成PRICE在大于2011-01-30 23:59:59的所有日期中超过22的行

因此,如果我们以上述结构为例,它将生成一行,在{2}大于CODE的两个日期中价格高于22时,会给出2011-01-30 23:59:59 AAA。 BBB不应该匹配,因为即使它在截止日期之后的价格高于22,它也会在截止日期之后的价格不超过22。

4 个答案:

答案 0 :(得分:2)

这应该适合你:

SELECT code FROM table
WHERE date > '2011-01-30 23:59:59'
GROUP BY code HAVING MIN(price) > 22

您可以从具有可接受日期的行中获取代码,并检查每个唯一代码的最低价格(以及所有价格)是否超过22。

答案 1 :(得分:1)

答案 2 :(得分:1)

SELECT CODE
  FROM mytable
 WHERE DATE >= '2011-01-31'
 GROUP BY CODE
HAVING MIN(PRICE) > 22

答案 3 :(得分:0)