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

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

我需要一个select查询,brandid=1000来输出:
StatusID    StatusCode    BrandID    StatusName

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

我需要一个select查询,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

很明显,它并没有达到预期的效果。

最佳答案

试试这个:

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

关于mysql - mysql查询选择行组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13859587/

10-09 07:18