Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用分组在一起的不同Select语句的SQL问题_Sql_Sql Server - Fatal编程技术网

使用分组在一起的不同Select语句的SQL问题

使用分组在一起的不同Select语句的SQL问题,sql,sql-server,Sql,Sql Server,我很难回答我提出的这个问题。我有一张桌子 使用列名为oEID、FkEquipmentType、Nominal、Low调用KpiSetupOee 我有一个select语句,它给出了FkEquipmentType等于“WM”的标称值 Select * from KpiSetupOee where FkEquipmentType =’WM’ 然后,我想结合另一个select语句来检索除“WM”以外的最低标称值 当我分别运行此命令时,我得到了两个select语句的正确答案。当我在中间做一个联合时,我得

我很难回答我提出的这个问题。我有一张桌子 使用列名为oEID、FkEquipmentType、Nominal、Low调用KpiSetupOee

我有一个select语句,它给出了FkEquipmentType等于“WM”的标称值

Select * from KpiSetupOee where FkEquipmentType =’WM’
然后,我想结合另一个select语句来检索除“WM”以外的最低标称值

当我分别运行此命令时,我得到了两个select语句的正确答案。当我在中间做一个联合时,我得到第一个答案的正确答案,但第二个答案是错误的。第二个选择不是给我最低的标称值。有人知道我做错了什么吗?是否有一个更简单的查询来获取这些值?先执行哪个select语句并不重要。我只需要标称值,当设备类型为“WM”时为低,当设备类型不等于WM时,其余设备的最小标称值为低。有什么建议吗?谢谢你的帮助

Select * from KpiSetupOee where FkEquipmentType =’WM’
Union all
Select top 1 * from KpiSetupOee where FlEquipmentType <>’WM’ Order by Nominal asc

相反,通过将select包装到中来尝试下面的查询

对于MySQL,语法如下所示。看到这把小提琴了吗

对于SQL Server,语法如下所示。请看这里的演示


您可以通过以下查询执行此操作:

SELECT TOP 2 * FROM (Select 1 as 'RowNum', OeeID, FkEquipmentType, Nominal, Low from #KpiSetupOee where FkEquipmentType ='WM'
Union
Select 2, OeeID, FkEquipmentType, Nominal, Low from #KpiSetupOee where FkEquipmentType <> 'WM') A Order by 'RowNum', Nominal asc 
此方法的好处是,它将始终确保FkEquipmentType为“WM”的行始终是返回查询中的第一行

看到这里了吗


希望这有帮助

将第二个选择放在括号内:选择。这个查询不会在SQLServer或MySQL中编译。你能做一把小提琴来证明这是有效的吗?我试过了,但没能成功。下面的答案很好。@Satwikandkarny,给出的语法是针对MySQL的,因为问题是用MySQL标记的,它确实是在MySQL中工作得很好的corect synatx;唯一的希克是我没有注意到排名前1的球员,他们应该被限制在第1位。无论如何,当前的编辑将更有意义。@ENGR024,您的问题已被MySQL和SQL Server标记。所以我给出的答案是关于MySQL语法的。现在有一个小错误。介意再试一次吗。。。请参阅编辑后的答案。Rahul,我错误地认为MySQL和SQL Server的语法相同。很抱歉给大家带来困惑。是的,这很有效,谢谢。我问问题会丢分吗?@ENGR024肯定有人对你的问题投了否决票。当有人否决你的问题时,你会失去声誉;当有人否决你的问题时,你会赢得声誉@ENGR024很高兴帮助您!!!
(Select * from tab1 where FkEquipmentType = 'WM')
Union all
(Select * from tab1 where FkEquipmentType <> 'WM' 
 Order by Nominal asc limit 1);
Select oeeid, FkEquipmentType,nominal,low
from tab1 where FkEquipmentType ='WM'
Union all
select oeeid, FkEquipmentType,nominal,low 
from
  (
  Select *,ROW_NUMBER() OVER (ORDER BY nominal) as rn from tab1 
  where FkEquipmentType <> 'WM' 
  ) X where rn = 1;
SELECT TOP 2 * FROM (Select 1 as 'RowNum', OeeID, FkEquipmentType, Nominal, Low from #KpiSetupOee where FkEquipmentType ='WM'
Union
Select 2, OeeID, FkEquipmentType, Nominal, Low from #KpiSetupOee where FkEquipmentType <> 'WM') A Order by 'RowNum', Nominal asc