Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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/7/sql-server/21.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/1/ssh/2.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
SQL Server联合消除具有不同属性的最后一行_Sql_Sql Server - Fatal编程技术网

SQL Server联合消除具有不同属性的最后一行

SQL Server联合消除具有不同属性的最后一行,sql,sql-server,Sql,Sql Server,我用两个并集子句得到结果。我使用distinct消除重复行。但我必须保留第一行,但要消除第一行。我怎样才能保持第一排 //for example in this sql first i have expected PRodId=10 first but it is last. SELECT DISTINCT * FROM ( SELECT ProdId FROM Products WHERE ProdId=10 UNION ALL SELECT ProdId FR

我用两个并集子句得到结果。我使用distinct消除重复行。但我必须保留第一行,但要消除第一行。我怎样才能保持第一排

//for example in this sql first i have expected PRodId=10 first but it is last. 
SELECT DISTINCT * FROM (
     SELECT ProdId FROM Products WHERE ProdId=10
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=120
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=400
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=10) prods

按产品id订购,如果这就是您希望先订购10件的原因。。除非提供
orderby
子句,否则无法保证sql查询结果的顺序

SELECT DISTINCT * FROM (
     SELECT ProdId FROM Products WHERE ProdId=10
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=120
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=400
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=10) prods
  ORDER BY prods.ProdId

按产品id订购,如果这就是您希望先订购10件的原因。。除非提供
orderby
子句,否则无法保证sql查询结果的顺序

SELECT DISTINCT * FROM (
     SELECT ProdId FROM Products WHERE ProdId=10
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=120
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=400
     UNION ALL
     SELECT ProdId FROM Products WHERE ProdId=10) prods
  ORDER BY prods.ProdId
为什么工会要这么做

Select Distinct ProdId 
 From Products 
 Where ProdId in (10,120,400)
 Order By ProdID
为什么工会要这么做

Select Distinct ProdId 
 From Products 
 Where ProdId in (10,120,400)
 Order By ProdID

如果希望行按特定顺序排列,则需要在查询中包括
orderby
。在您的情况下,您可以添加:

order by (case prodid when 10 then 1 when 120 then 2 when 400 then 3 end)
您可以将整个查询编写为:

select distinct p.prodid
from products p
where prodid in (10, 120, 400)
order by (case prodid when 10 then 1 when 120 then 2 when 400 then 3 end);
注二:

  • 如果没有重复项,则不要使用
    选择distinct
  • 如果您希望数据按产品id顺序排列,那么只需使用
    orderbyprodid

如果希望行按特定顺序排列,则需要在查询中包含
orderby
。在您的情况下,您可以添加:

order by (case prodid when 10 then 1 when 120 then 2 when 400 then 3 end)
您可以将整个查询编写为:

select distinct p.prodid
from products p
where prodid in (10, 120, 400)
order by (case prodid when 10 then 1 when 120 then 2 when 400 then 3 end);
注二:

  • 如果没有重复项,则不要使用
    选择distinct
  • 如果您希望数据按产品id顺序排列,那么只需使用
    orderbyprodid

    • 如果没有明确的ORDER BY,返回给应用程序的结果集中的行顺序与数据源(表表达式)的顺序无关。查询优化器可以按其“认为”更快的任何顺序自由返回行。
      在查询中提供显式ORDER BY。

      如果没有显式ORDER BY,返回给应用程序的结果集中的行顺序与数据源(表表达式)的顺序无关。查询优化器可以按其“认为”更快的任何顺序自由返回行。

      在查询中提供明确的ORDER BY。

      事实上,我需要插入顺序。我必须保持插入顺序。@Yargicx-然后您需要将其存储在一列中,并按该列进行排序。如果ProdId是自动递增的,那么这应该是可行的。我也推荐@johncappelletti的答案。如果您不需要,请将
      union all
      s去掉。事实上,我需要插入顺序。我必须保持插入顺序。@Yargicx-然后您需要将其存储在一列中,并按该列进行排序。如果ProdId是自动递增的,那么这应该是可行的。我也推荐@johncappelletti的答案。如果不需要,请将
      union all
      s删除。为什么要将
      prodId=10
      删除两次?此查询的目的是什么?要查找产品表中存在哪些产品代码(10120240-可能是参数)?为什么有两次
      prodId=10
      ?此查询的目的是什么?要查找产品表中存在哪些产品代码(10120240-可能是参数)?请随意删除
      不同的
      。@DuduMarkovitz随后添加了它,以防
      产品中的ProdID不不同
      ProdID
      ?在这种情况下,我将敲响设计警报。请随意删除
      Distinct
      @dududumarkovitz随后添加了它,以防ProdID在
      产品中不是Distinct
      ProdID
      ?在这种情况下,我会发出设计警报。请随意删除
      Distinct
      请随意删除
      Distinct