如果需要,请使用MYSQL选择2个不同的数据集

如果需要,请使用MYSQL选择2个不同的数据集,mysql,if-statement,Mysql,If Statement,基本上,我想做的是根据用户登录时的状态对显示的数据进行选择,例如,如果用户是试用用户,则从特定日期范围选择数据,但如果他们是付费用户,则选择更大的日期范围。我尝试了下面的代码,但它抛出了一个错误,说我的语法不正确。任何帮助都将不胜感激 IF (SELECT MemberStatus FROM user WHERE Memberstatus = 'Trial') THEN SELECT * FROM article WHERE date > '1990/01/01'; EL

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

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;

你不需要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;

编辑:根据对问题的评论,从用户选择可能不完整

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

您的示例逻辑是否错误?您似乎在说试用用户获得>'1990/01/01',付费用户获得>'2000/01/01'。另外,大概是选择成员状态。。。查询的一部分应该引用用户名值/参数-除非您的逻辑是关于用户表中的所有用户?@Shaun:并且您可能需要将用户检查更改为类似于WHERE Memberstatus='Trial'和userid=@userxt的内容,这看起来可能会起作用,如果我需要根据相同的条件显示两个不同的select语句呢。例如:如果他们是用户,请选择链接;如果他们是试用用户,请仅选择标题。本质上是根据用户状态限制显示内容?@Shaun:那就有两个查询了。如果存在,请使用从用户中选择*,其中Memberstatus='Trial'。。。在这种情况下是的,就像。。。对服务器脚本进行检查,然后进行相应的查询以获取所需的数据。更简单、更干净、更具活力。