从具有相同名称但值不同的sql行中获取值

时间:2012-09-25 12:30:50

标签: sql

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

  

ID NAME VALUE
  123 ABC_A文本文本文本
  123 ABC_A更多文字
  123 ABC_A更多文字
  123 ABC_B其他一些文字

现在,我希望获得名称为“ABC_A”的所有行的不同值。我试图通过小组获得那些,但没有成功。

4 个答案:

答案 0 :(得分:4)

这就是你想要的吗?

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

但如果 ID和名称的值是唯一的,那么您可以省略 distinct以避免过度使用服务器

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

答案 1 :(得分: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';

答案 2 :(得分:2)

除John之外,如果您使用关键字Distinct,则只会获得不同的值,因此

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

答案 3 :(得分:2)

GROUP BY语句与聚合函数结合使用,将结果集分组为一列或多列。
在上面的例子中,为什么不使用简单的where子句

select * from <tableName> where name ='ABC_A'