【问题标题】:SQL distinct query with whole record [closed]具有整个记录的 SQL 不同查询 [关闭]
【发布时间】:2014-12-22 18:44:27
【问题描述】:

如何从 DISTINCT 列值的表中选择所有记录,我想要这样的东西

select * from table where DISTINCT col1, col2, col3 and  S_Id = '20';

编辑

[1] 如何在我的表中名为 S_Id 的列中找到具有相同值的 3 列 (col1, col2, col3) 的不同值?

[2] 我如何从表中选择所有列和行,其中 (col1, col2, col3) 在这些不同的值中找到? (SELECT col0, col1, col2, col3, col4, ... col9 FROM table WHERE ???(其中 s_id = val))

【问题讨论】:

  • 请尝试提出一个可以理解的问题。
  • 你不能。 Distinct 不是这样工作的。
  • 当你无法用语言来描述你的问题时,试着用例子来说明它:你有什么 -> 你想得到什么。
  • 尝试使用关键字“选择不同的多列”进行搜索。
  • 您只能通过在要区分的列上使用group by 来实现此目的,这几乎就像distinct 的副作用是对某些列求和、计数或排除。但这一切都取决于您要实现的目标,请为我们解释一下,我们可能会为您提供帮助

标签: sql


【解决方案1】:
SELECT *
FROM table 
WHERE 
    col1 != col2 AND
    col1 != col3 AND 
    col2 != col3 AND 
    S_Id = '20';

【讨论】:

  • 我相当肯定她/他只希望不同的应用到单个列,而不是整行。
  • 它只返回 3 列数据,但我想要具有不同 col1、col2、col3 的整行
  • 这是对答案的有效尝试,不应被标记。可以通过在代码周围添加额外的 cmets 来改进它,但是,如果你不喜欢答案,你应该投反对票,而不是标记它。
  • WHERE 子句使用 4 列,因此所有 4 列以及表中存在的所有其他列都将出现在所选结果中。 @Niha Mialk,使用此命令时,您如何在结果中仅获得 3 列?这个答案正是你想要的。
  • +1 。 . .这似乎是对问题的 a 正确阅读,并且除了 NULL 值(OP 没有指定在这种情况下要做什么)之外它有效。我更喜欢更标准的<> 而不是!=,但这是一个小问题。
【解决方案2】:

我相信有很多方法可以做你想做的事。试试这个:

SELECT a.*
FROM FGEHF_DB.dbo.Tbl_Alotee a
JOIN 
(
    SELECT MAX(ID) AS ID
    FROM FGEHF_DB.dbo.Tbl_Alotee
    WHERE Plot_Id = '4117'  -- or other value
    GROUP BY alotee_name, alotee_fname, alotee_cnic
) b
ON a.ID = b.ID

我想我们现在越来越近了。

【讨论】:

  • Here是查询结果
  • 这是你想看的吗?
  • 这对我没有帮助。解释那里有什么你不想看到或你认为缺少什么。具体一点。
  • 我想获取整行记录,其中只有 alotee_name、alotee_fname、alotee_cnic 不重复,其他列可能会发生任何情况.. 并且 Plot_Id = '4117' 即 Plot_Id 可能重复,其他列也可能重复。 .
  • 如果这不起作用,请显示另一个图形并说“ID 73 显示正确,ID 65 应该被排除,因为...”
猜你喜欢
  • 2015-11-20
  • 2014-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
相关资源
最近更新 更多