SQL查询以获取唯一列表

18 浏览
0 Comments

SQL查询以获取唯一列表

我有一个名为\'resources\'的表格。\n

机器    主机    启用
mach1   host1   TRUE
mach2   host1   FALSE
mach3   host1   FALSE
mach4   host2   TRUE
mach5   host2   TRUE

\n我想要获取所有与之关联的资源/机器的Enabled为True的主机列表。\n我尝试了以下SQL查询-\n

select distinct Host from resources where Enabled = TRUE;

\n但是这个查询给出了host1和host2作为答案,而我希望的答案只是host2。有谁可以帮我写一个可以实现这个目标的SQL查询吗?

0
0 Comments

问题:SQL查询获取唯一列表

原因:需要从资源表中获取唯一的主机列表,并且过滤掉已禁用的主机。

解决方法:

select distinct Host from resources res1 where not exist (

select 1 from resources res2 WHERE res1.host = res2.host AND Enabled = FALSE limit 1

);

0
0 Comments

问题:如何通过SQL查询获得唯一列表?

原因:这个问题的出现是因为在数据库中存在一些重复的数据,需要通过查询来获取唯一的数据列表。

解决方法:下面是一种解决方法,可以通过SQL查询来获取唯一列表。

SELECT DISTINCT(Host)
FROM Resources
WHERE Enabled = TRUE AND Host NOT IN (Select Host FROM Resources WHERE Enabled = FALSE)

另外,还可以在第二个SELECT语句的末尾添加一个LIMIT 1来优化查询的速度。

SELECT DISTINCT(Host)
FROM Resources
WHERE Enabled = TRUE AND Host NOT IN (Select Host FROM Resources WHERE Enabled = FALSE)
LIMIT 1

这样的修改可能会使查询更快。

请尝试以上方法,并告诉我结果如何。

0
0 Comments

问题原因:用户想要实现获取唯一列表的功能,但不清楚如何编写SQL查询语句来实现。

解决方法:有两种常见的方法可以实现获取唯一列表的功能。第一种方法是使用GROUP BY子句,通过对指定列进行分组来获取唯一的值。第二种方法是使用DISTINCT关键字,直接从表中获取唯一的值。

下面是两种方法的示例查询语句:

方法一:

SELECT Host
FROM resources
GROUP BY Host        
HAVING COUNT(*) = COUNT(CASE WHEN Enabled = True THEN 1 END)

方法二:

SELECT DISTINCT Host 
FROM resources AS r1
WHERE Enabled = TRUE AND 
      NOT EXISTS (SELECT 1 
                  FROM resources AS r2
                  WHERE r1.Host = r2.Host AND r2.enabled = FALSE)

这两种查询语句都可以实现获取唯一列表的功能,具体使用哪种方法取决于具体情况和个人偏好。

用户询问了使用GROUP BY和DISTINCT的区别,可以在这里找到答案。用户还被告知可以接受任何有效的答案来解决问题。

最后,用户表示在所有的回答中第一个解决方案对他最有用,因此接受了这个答案。

0