mysql查询选择行组

时间:2012-12-13 12:10:10

标签: mysql

我有一个简单的表格,我必须从中做一个选择,但它必须是这样的:

表格示例

StatusID    StatusCode    BrandID    StatusName

1           1             1000       First Status
2           2             1000       Second Status
3           3             1000       Third Status
4           1             2000       First Custom Status

我需要一个选择查询,其中BrandID = 1000输出:

StatusID    StatusCode    BrandID    StatusName

1           1             1000       First Status
2           2             1000       Second Status
3           3             1000       Third Status

我需要一个选择查询,其中BrandID = 2000输出:

StatusID    StatusCode    BrandID    StatusName

4           1             2000       First Custom Status
2           2             1000       Second Status
3           3             1000       Third Status

换句话说,如果BrandID是默认值(1000),我需要选择属于此BrandID的所有行,但是如果BrandID是2000,我需要选择属于此BrandID +行的所有行,如果没有BrandID,则使用默认BrandID 2000年为那个特定的StatusCode。 我希望这是足够好的解释。这是我一直在努力的问题

SELECT  *

FROM        table

GROUP BY    StatusCode
HAVING  BrandID = 2000

显然它不能按预期工作。

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT * 
FROM (SELECT * FROM statusTable 
    GROUP BY StatusCode HAVING StatusCode NOT IN (SELECT StatusCode FROM statusTable WHERE BrandID = 2000)
    UNION 
    SELECT * FROM statusTable WHERE BrandID = 2000
) AS A 
ORDER BY StatusCode

答案 1 :(得分:0)

这是查询

从表中选择*,其中brandId = 1000 联盟 select * from table where brandid = 2000

这将打印属于这两个标准的所有记录。