我有一个表类别
它有一列 CategoryName
- 车
- 平面
- 船
我有另一张名为品牌
的表格它有一列 RelatedCategory
- 法拉利 - 1
- learjet - 2
- 未分类 - null
- audi - 1
我想生成一个独特的品牌列表(null和非null RelatedCategory),但使用CategoryName作为列表。
select distinct RelatedCategory from brand inner join category on Brand.RelatedCategory=Category.CategoryID
我希望该列表是品牌类别
- 车
- 船
- 非分类
我该怎么做?获得独特的品牌类别以及未分类的品牌
答案 0 :(得分:2)
你可以使用LEFT JOIN,它会给你第一个表中第二个不存在的结果:
select distinct RelatedCategory from category left join brand on
Brand.RelatedCategory=Category.CategoryID
答案 1 :(得分:1)
使用LEFT JOIN
代替INNER JOIN
。并使用IFNULL
代替不存在的类别名称来使用品牌名称。
SELECT DISTINCT(IFNULL(c.CategoryName, b.name)) AS RelatedCategory
FROM Brand AS b
LEFT JOIN Category AS c ON b.RelatedCategory = c.categoryID
另一种选择是使用UNION
SELECT DISTINCT CategoryName
FROM Brand AS b
JOIN Category AS c ON b.RelatedCategory = c.categoryID
WHERE RelatedCategory IS NOT NULL
UNION
SELECT DISTINCT Name
FROM Brand
WHERE RelatedCategory IS NULL