首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL UNION在每个块中都有唯一的分组

SQL UNION在每个块中都有唯一的分组
EN

Stack Overflow用户
提问于 2014-02-04 09:25:42
回答 1查看 164关注 0票数 1

我有一个汽车经销商分类网站。为了理解如何做到这一点,我省略了表结构的细节,以使这个示例变得简单。

经销商要么是铜,银,金,白金经销商出售汽车,卡车,货车,SUV

比如说汽车、卡车、货车和SUV都在他们自己的桌子上。因此,我们有以下表格:

代码语言:javascript
复制
  1. Dealers (DealerID, DealerName, DealerLevel <-- 1 for Bronze, 2 for Silver, etc.)
  2. Cars (CarID, DealerID, CarName)
  3. Trucks (TruckID, DealerID, TruckName
  4. Vans (VanID, DealerID, VanName)
  5. SUVs (SUVID, DealerID, SUVName)

我们可以这样说:

代码语言:javascript
复制
SELECT DealerID, DealerName AS Title FROM Dealers
UNION ALL
SELECT CarID, CarName AS Title FROM Cars
UNION ALL
SELECT TruckID, TruckName AS Title FROM Trucks
UNION ALL
SELECT VanID, VanName AS Title FROM Vans
UNION ALL
SELECT SUVID, SUVName AS Title FROM SUVs

我需要的结果是按以下顺序在每一个区块。我说阻止不同的工会,但我理解这是一个单一的结果集在最后。

第一街区:首先列出所有经销商的顺序为白金,然后是金,银和铜。对白金、金、银和铜进行随机排序(所以没有人抱怨总是有人在他们上面出现)。

第二个块:用前面提到的方法列出所有的汽车。

第三,第四,等等。

你可能想知道,为什么?我正在为结果生成一个完整的JSON输出,该结果以它们的类别为标记,并在jQuery自动建议/完整插件中进行了解析。当你看到不同的标题和章节时,想想Facebook吧。

谢谢您的建议和/或例子!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-04 09:50:13

为每个选择添加一个常量,并使用它来定义块。然后按照这个常量进行排序,以及您可能想要对数据进行排序的任何其他值(如您的示例中的DealerLevel)。要随机排序,添加一个NEWID()列:

代码语言:javascript
复制
SELECT DealerID, DealerName
FROM
(
    SELECT 1 AS MyConst, DealerLevel, DealerID, DealerName AS Title 
      FROM Dealers
    UNION ALL
    SELECT 2, DealerLevel, CarID, CarName 
      FROM Cars INNER JOIN Dealers ON Dealers.DealerId = Cars.DealerId
    UNION ALL
    SELECT 3, DealerLevel, TruckID, TruckName 
      FROM Trucks INNER JOIN Dealers ON Dealers.DealerId = Trucks.DealerId
    UNION ALL
    SELECT 4, DealerLevel, VanID, VanName 
      FROM Vans INNER JOIN Dealers ON Dealers.DealerId = Vans.DealerId
    UNION ALL
    SELECT 5, DealerLevel, SUVID, SUVName 
      FROM SUVs INNER JOIN Dealers ON Dealers.DealerId = SUVs.DealerId
) T
ORDER BY MyConst, DealerLevel DESC, NEWID() ;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21548415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档