如何选择不同长度的列

时间:2016-07-25 14:07:27

标签: sql ms-access

我有一个零件编号表以及许多属性,如:

[Type] [Manager] [Cat. Code] [etc...]
  A      Dave       123
  B      Chris      153
  C                 254
  D

我试图列出每个属性的所有唯一值,因此它看起来更像是这样:

[Type] [Manager] [Cat. Code] [etc...]
  A      Dave       123
  B      Dave       254
  C      Dave       153
  D      Chris      153

但是每当我尝试使用SELECT DISTINCT *等尝试这样做时,它会填满所有列,使它们与最长的列长度相同,根据原始表格水平填充:

eg) array_of_hash = [ { id: 20, name: 'John' }, { id: 30, name: 'Doe'} ]

如何阻止这种情况发生,只保留每列的唯一值,即使它们的长度可能不同?

1 个答案:

答案 0 :(得分:2)

我认为你误解了DISTINCT的作用。它会过滤您的结果,以便返回的所有都是唯一的,而不是每列。根据SELECT中命名的列,您将得到不同的结果。有关示例,请参阅http://www.techonthenet.com/sql_server/distinct.php和"示例 - 使用多个表达式"

对于您的情况,如果您想要每列中的唯一值列表,那么您必须对每列进行单独的查询,例如:

SELECT DISTINCT [Type] FROM [Parts]
SELECT DISTINCT [Manager] FROM [Parts]
...etc

如果您然后并排(根据您的样本所需输出),您只需要将它们复制并粘贴到电子表格或其他内容中。