2013-04-04 51 views
0

我试图查询200个用户,但不知道确切的Subj_Id s。因此,我不能只查询范围Subj_Ids(尽管我知道我想从200开始),但是需要对我查询的Subj_Ids的范围设置限制。我试过了:mySQL:问题使用LIMIT

SELECT * 
    FROM session2 
    WHERE Subj_Id > 200 
    AND Subj_Id IN (
     SELECT Subj_Id 
      FROM userdata 
      WHERE `Primary Lang` != '' 
      OR `Primary Lang` != '-' 
      OR `Primary Lang` != '--' 
    ) 
    LIMIT 200; 

但是,它只返回一小部分Subj_Ids。这是我的语法问题,还是与我使用的数据库?

+1

多少,如果你不指定LIMIT 200,你得到什么? – 2013-04-04 00:29:40

+1

我认为'WHERE Subj_Id> 200'似乎很奇怪。你真的只想要那里的'Subj_Id'值为201或更多? – Cfreak 2013-04-04 00:31:01

+1

限制200并不意味着它会返回200,如果你的条件已经过滤了大部分用户,那么它应该返回少数用户。 – ljh 2013-04-04 00:31:45

回答

0

在子查询中选择您想要的用户,然后重新加入以获取会话。

您不清楚表格的格式。以下假定每个表都有一个user_iduser_id/subj_id定义会话:

select s.* 
from (SELECT user_id, max(subj_id) as maxsi 
     FROM session2 
     WHERE Subj_Id > 200 AND 
      Subj_Id IN (SELECT Subj_Id FROM userdata WHERE `Primary Lang` not in ('', '-', '--')) 
     group by user_id 
     LIMIT 200 
    ) u join 
    session2 s 
    on u.user_id = s.user_id and s.subj_id = maxsi 
+0

对不起,用户和主题是相同的东西。我编辑了我的问题来反映这一点。用户数据是另一个表,但是,它由'Subj_Id'链接。你的答案仍然适用? – 2013-04-04 00:48:34