我有一个简单的表格,我必须从中进行选择,但必须是这样的:
表格示例
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/