使用MYSQL IF选择2个不同的数据集

时间:2011-07-16 13:29:55

标签: mysql if-statement

基本上我想要做的是在登录时根据用户状态选择显示的数据,例如,如果用户是试用用户,则选择特定日期范围内的数据,但如果他们是付费用户则选择更大的日期范围。我已经尝试了下面的代码,但它引发了一个错误,说我的语法不正确。任何帮助将不胜感激。

IF (SELECT MemberStatus FROM user WHERE Memberstatus = 'Trial') 
THEN
  SELECT *
  FROM article
  WHERE date > '1990/01/01';  
ELSE
  SELECT *
  FROM article
  WHERE date > '2000/01/01';
ENDIF;

2 个答案:

答案 0 :(得分:1)

您不需要IF。这也是标准的SQL

  SELECT *
  FROM article
  WHERE date >
           CASE
                 WHEN EXISTS (SELECT * FROM user WHERE Memberstatus = 'Trial')
                            THEN '2000/01/01'
                 ELSE '1990/01/01'
           END;

编辑:根据提问题,用户的SELECT可能不完整

答案 1 :(得分:1)

我认为在一个查询中执行此操作(检查用户状态并根据它选择项目)是错误的。您可能需要在代码中的其他位置使用试用限制或显示试用状态。因此,最好将其存储在用户配置文件或变量的实例中,并构建有关用户状态的查询。