3

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

表格示例

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 的话特定的状态码。我希望这是足够好的解释。这是我一直在研究的问题

SELECT  *

FROM        table

GROUP BY    StatusCode
HAVING  BrandID = 2000

显然它没有按预期工作。

4

2 回答 2

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
于 2012-12-13T12:33:08.820 回答
0

这是查询

select * from table where brandId = 1000 union select * from table where brandid = 2000

这将打印属于这两个条件的所有记录。

于 2012-12-13T12:14:14.313 回答