【问题标题】:SELECT DISTINCT from a specific column for dropdownlist从下拉列表的特定列中选择 DISTINCT
【发布时间】:2014-07-07 17:05:37
【问题描述】:

我希望编写一个查询,只为下拉列表返回不同的结果。注意:我有很多表 FULL OUTER JOINED 在一起,所以当我运行 SELECT DISTINCT 查询时,它仍然给我所有不同的行,但我希望列数据是不同的。

例子:

ColA    ColB
A        a
A        a
A        c
B        b     
B        a
C        b    

DropDown List1 结果(对于 ColA):

 DropDownList
     A
     B
     C

DropDown List2 结果(对于 ColB):

 DropDownList
     a
     b
     c

【问题讨论】:

  • 使用两个单独的查询:SELECT DISTINCT ColA FROM MyTableSELECT DISTINCT ColB FROM MyTable
  • 如果您将查询结果用于填充下拉列表之外的其他内容,则必须遍历结果或使用 LINQ 来获得结果。
  • @Linger 那么有没有办法结合查询来获得相同的结果?例如,SELECT DISTINCT ColA,ColB。然后 DropDownList1 Values = ColA 和 DropDownList2 Values = ColB
  • @user3339242,不是真的。你为什么要把它们结合起来呢?
  • 我的意思是,如果您的查询返回的数据用于其他用途,但也有您需要填充列表的结果,您可以通过使用循环遍历查询的结果来构建您的列表.

标签: c# sql sql-server join subquery


【解决方案1】:

在一个查询中将两个字段组合在一起没有合乎逻辑的理由。所以你最好只使用两个单独的查询。

SELECT DISTINCT ColA FROM MyTable 

SELECT DISTINCT ColB FROM MyTable

按照 mbeckish 的建议(加入他们的行号),您可以执行以下操作 (SQL Fiddle):

SELECT m.ColA, ms.ColB
FROM
(
  SELECT ColA, ROW_NUMBER() OVER(ORDER BY ColA) AS Row
  FROM 
  (
    SELECT DISTINCT ColA
    FROM MyTable
  ) s 
) m
FULL OUTER JOIN
(
  SELECT ColB, ROW_NUMBER() OVER(ORDER BY ColB) AS Row 
  FROM 
  (
    SELECT DISTINCT ColB
    FROM MyTable
  )  ss
) ms ON m.Row = ms.Row

【讨论】:

    猜你喜欢
    • 2014-10-03
    • 2014-04-07
    • 2015-10-05
    • 1970-01-01
    • 2017-05-19
    • 2015-11-03
    • 1970-01-01
    相关资源
    最近更新 更多