首页 > 解决方案 > 如果先前满足条件,则运行其他选择

问题描述

我有下一个选择:

SELECT
  calories,
  total
FROM user_food
WHERE login = 'blabla'
  AND date >= '2020-11-14'
  AND date < '2020-11-16'
  GROUP BY date
  ORDER BY date

如果当前选择满足下一个条件,我需要运行其他选择语句:

calories < ((30 / 100) * total)

桌子:

calories total login    date
 23      50    'www'    '2020-11-12'
 19      36    'abc'    '2020-11-11'
 10      50    'blabla' '2020-11-14'
 13      50    'blabla' '2020-11-15'

换句话说,我需要类似的东西:

    if(SELECT
      calories,
      total
    FROM user_food
    WHERE login = 'blabla'
      AND date >= '2020-11-14'
      AND date < '2020-11-16'
      GROUP BY date
      ORDER BY date) is calories < ((30 / 100) * total)
      THEN (SELECT something)

标签: sqlpostgresql

解决方案


您所描述的内容通常由EXISTS. 但是,您并没有真正提供足够的信息来提供详细的答案。但是结构是这样的:

SELECT <something>
. . . 
WHERE EXISTS (SELECT
              FROM user_food
              WHERE login = 'blabla' AND
                    date >= '2020-11-14' AND
                    date < '2020-11-16' AND
                    calories < ((30.90 / 100) * total) AND
                    -- some sort of correlation clause
              );

推荐阅读