2

我需要有关 sql 查询的帮助。首先,我有一个具有以下结构的数据库(示例):

ID NAME VALUE
123 ABC_A Text Text Text
123 ABC_A Some more Text
123 ABC_A Even more Text
123 ABC_B some other text

现在,我想获取名称为“ABC_A”的行的所有不同值。我试图通过 group by 和 have 来获得这些,但没有成功。

4

4 回答 4

4

这是你想要的吗?

SELECT DISTINCT Value
FROM tableName
WHERE ID = 123 AND Name = 'ABC_A'

但如果ID 和 Name 的值是唯一的,那么您可以省略 distinct以避免过度杀伤服务器

SELECT Value
FROM tableName
WHERE ID = 123 AND Name = 'ABC_A'
于 2012-09-25T12:32:04.220 回答
2

我想获取名称为“ABC_A”的行的所有不同值

例如:

SELECT value, count(value) FROM tbl WHERE name = 'ABC_A' GROUP BY value;

如果您不需要一个值出现的次数,请将其删除,或使用DISTINCT

SELECT DISTINCT value FROM tbl WHERE name = 'ABC_A';

如果您还希望通过 ID 获得不同的行值,

SELECT value, count(value)
    FROM tbl
    WHERE id = 123 AND name = 'ABC_A'
    GROUP BY value;

或者,如果您想要“全部”不同的值(也有重复值),请删除GROUP BY(并且您不再可以使用count(),它始终为 1):

SELECT value FROM tbl WHERE id = 123 AND name = 'ABC_A';
于 2012-09-25T12:34:49.520 回答
2

除了 John,如果您使用关键字 Distinct,您只能获得不同的值,因此

SELECT DISTINCT Value
FROM tableName
WHERE ID = 123 AND
        Name = 'ABC_A'
于 2012-09-25T12:36:18.903 回答
2

GROUP BY语句与聚合函数一起使用,以按一列或多列对结果集进行分组。
在上述情况下,为什么不使用简单的 where 子句

select * from <tableName> where name ='ABC_A'
于 2012-09-25T12:38:15.067 回答