BKl*_*BKl 11 sql database union select
我有两张桌子.不同之处在于存档是一个表而另一个存放当前记录.这些是记录公司销售额的表格.在这两个领域我们都有:id,名称,销售价格.我需要从两个表中选择给定名称的最高价和最低价.我试着用这个查询:
select name, max (price_of_sale), min (price_of_sale)
from wapzby
union
select name, max (price_of_sale), min (price_of_sale)
from wpzby
order by name
Run Code Online (Sandbox Code Playgroud)
但是这样的调查给了我两条记录 - 一张当前的表,一张表档案.我想立即从两个表中选择最小和最大价格的名称.我如何获得此查询?
Amy*_*y B 25
这里有两个选项(符合MSSql)
注意:UNION ALL将组合这些集合而不会消除重复.这比UNION简单得多.
SELECT Name, MAX(Price_Of_Sale) as MaxPrice, MIN(Price_Of_Sale) as MinPrice
FROM
(
SELECT Name, Price_Of_Sale
FROM wapzby
UNION ALL
SELECT Name, Price_Of_Sale
FROM wpzby
) as subQuery
GROUP BY Name
ORDER BY Name
Run Code Online (Sandbox Code Playgroud)
这个在计算组合之前计算每个表的最大值和最小值 - 以这种方式执行它可能更有效.
SELECT Name, MAX(MaxPrice) as MaxPrice, MIN(MinPrice) as MinPrice
FROM
(
SELECT Name, MAX(Price_Of_Sale) as MaxPrice, MIN(Price_Of_Sale) as MinPrice
FROM wapzby
GROUP BY Name
UNION ALL
SELECT Name, MAX(Price_Of_Sale) as MaxPrice, MIN(Price_Of_Sale) as MinPrice
FROM wpzby
GROUP BY Name
) as subQuery
GROUP BY Name
ORDER BY Name
Run Code Online (Sandbox Code Playgroud)
在SQL Server中,您可以使用子查询:
SELECT [name],
MAX([price_of_sale]) AS [MAX price_of_sale],
MIN([price_of_sale]) AS [MIN price_of_sale]
FROM (
SELECT [name],
[price_of_sale]
FROM [dbo].[wapzby]
UNION
SELECT [name],
[price_of_sale]
FROM [dbo].[wpzby]
) u
GROUP BY [name]
ORDER BY [name]
Run Code Online (Sandbox Code Playgroud)
这更像你想要的吗?
SELECT
a.name,
MAX (a.price_of_sale),
MIN (a.price_of_sale) ,
b.name,
MAX (b.price_of_sale),
MIN (b.price_of_sale)
FROM
wapzby a,
wpzby b
ORDER BY
a.name
Run Code Online (Sandbox Code Playgroud)
它未经测试,但应该在一行上返回所有记录,而不需要联合
| 归档时间: |
|
| 查看次数: |
50574 次 |
| 最近记录: |