2010-10-12 141 views
1

我有一张表SIGNUPS,我注册所有注册到特定事件。现在,我想让所有签署了事件的人员都有一个额外的列状态STATUS告诉用户是否被实际接受(STATUS =“OK”)或者是否在等待列表中(STATUS =“WL”) 。我尝试了所有其他的像这样SQL:按日期过滤

SELECT *, IDUSER IN (SELECT IDUSER FROM SIGNUPS ORDER BY DATE ASC LIMIT 10) 
as STATUS from SIGNUPS WHERE IDEVENT = 1 

这应该返回状态1谁签署了第10个用户和0。不幸的是,我得到一个Mysql错误,告诉我在子查询中LIMIT还不被支持。

请问您能否提供另一种获取相同信息的方式?

感谢

+0

我认为'INNER JOIN'应该有所帮助。 – 2010-10-12 09:03:35

回答

0

像下面这样会得到你所需要的 - 虽然我还没有对一些样本表进行了测试。子查询查找最近十次注册发生的日期,然后用于昏迷到当前行的日期。

select 
    s.*, 
    s.DATE > d.min_date_10 AS STATUS 
from SIGNUPS s 
    join (
     select MIN(DATE) AS min_date_10 from (
      select DATE from SIGNUPS order by DATE asc LIMIT 10 
     ) a 
    ) d 
WHERE IDEVENT = 1