2011-02-15 77 views
0

我有一张表格,里面保存着一位客户,另一张表格保存了该客户的结果。选择除第一个以外的所有记录

一个客户可以有很多结果。

我希望能够firsly仅选择在CustResults多个条目,然后从这些,我想除了第一个所有记录的客户...

我有这个迄今为止,它以多个结果检索客户,但是我不知道如何才能获得第一个结果。

SELECT * FROM CustResults cp 
JOIN Customer c ON c.CustomerID = cp.CustomerID 
WHERE 
(SELECT count(CustomerID) as cpid 
FROM CustResults WHERE CustomerID = cp.CustomerID GROUP BY CxID) > 1 

丽塔:RESULT 1 苏:结果1,结果2,结果如图3所示,结果4 鲍勃:RESULT 1,结果2,结果3

我只想Sue和鲍勃,因为丽塔只有一个结果,并从苏和鲍勃,我只想看看结果2,3,4

任何想法?

感谢

增加了更多的信息:

这里是我的确切查询:

SELECT COUNT(cp.CxID)作为intSmokers FROM CustPrimarySmoking CP JOIN客户C ON cp.CxID = c.CustomerID WHERE(SELECT count(CustPrimarySmokingID)as cqpid FROM CustPrimarySmoking WHERE CxID = cp.CxID GROUP BY CxID)> 1

显然,我可以使用LIMIT 1,99999,因为查询只返回一个值(计数)。

我想让Count在CustPrimarySmoking中使用多条记录的客户,但忽略第一个条目。

任何进一步的想法?

回答

2

愚蠢和不那么灵活(但是,应该工作 所有 大部分时间)...

LIMIT 1, 999999999; 
     ^to ensure all rows are returned 
0

你有没有尝试添加“OFFSET 1”在查询结束?

0

如果您之后的所有数据都是计数而不是实际记录,那么您只需从已有数量中减去客户数量(因为您已经确定每个数据至少为一条记录),即

SELECT count(cp.CxID)-count(DISTINCT cp.CxID) as intSmokers 
FROM CustPrimarySmoking cp 
JOIN Customer c ON cp.CxID = c.CustomerID 
WHERE (
    SELECT count(CustPrimarySmokingID) as cqpid 
    FROM CustPrimarySmoking WHERE CxID = cp.CxID 
    GROUP BY CxID 
) > 1 

然而,如果你是实际的行后,这个怎么样:

SELECT * FROM Customer; 
    +------------+------+ 
    | CustomerID | name | 
    +------------+------+ 
    |   1 | Rita | 
    |   2 | Sue | 
    |   3 | Bob | 
    |   4 | Jack | 
    +------------+------+ 


    SELECT * FROM CustPrimarySmoking; 

    +----------------------+------+-------------------+ 
    | CustPrimarySmokingID | CxID | result   | 
    +----------------------+------+-------------------+ 
    |     1 | 1 | Result 1 for Rita | 
    |     2 | 2 | Result 1 for Sue | 
    |     3 | 2 | Result 2 for Sue | 
    |     4 | 2 | Result 3 for Sue | 
    |     5 | 2 | Result 4 for Sue | 
    |     6 | 3 | Result 1 for Bob | 
    |     7 | 3 | Result 2 for Bob | 
    |     8 | 3 | Result 3 for Bob | 
    +----------------------+------+-------------------+ 

    SELECT * FROM CustPrimarySmoking cp 
    JOIN Customer c ON cp.CxID = c.CustomerID 
    WHERE CustPrimarySmokingID <> (
     SELECT CustPrimarySmokingID 
     FROM CustPrimarySmoking 
     WHERE CxID = cp.CxID ORDER BY CustPrimarySmokingID LIMIT 1 
    ); 


    +----------------------+------+------------------+------------+------+ 
    | CustPrimarySmokingID | CxID | result   | CustomerID | name | 
    +----------------------+------+------------------+------------+------+ 
    |     3 | 2 | Result 2 for Sue |   2 | Sue | 
    |     4 | 2 | Result 3 for Sue |   2 | Sue | 
    |     5 | 2 | Result 4 for Sue |   2 | Sue | 
    |     7 | 3 | Result 2 for Bob |   3 | Bob | 
    |     8 | 3 | Result 3 for Bob |   3 | Bob | 
    +----------------------+------+------------------+------------+------+ 
相关问题