SQL选择具有相同字段值的行

时间:2013-02-20 04:51:52

标签: sql sql-server-2012

初始表是这样的

id  name        count
1   chocolate   5 
1   cheeze      3 
2   pepperoni   2
2   potatoes    1
2   cheese      7
3   dirty sock  2

我想要的是选择具有不同ID但具有相同名称的行。换句话说,将用于更多食谱的成分

4 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望按名称选择重复项。在你的例子中,如果你使用相同的拼写,那应该是cheese(但你没有 - 这是错误的吗?)。

假设我做对了,这应该有效(SQLFiddle DEMO):

SELECT * FROM mytable
WHERE [name] IN (
    SELECT [name]
    FROM mytable
    GROUP BY [name]
    HAVING count(*) > 1
)

答案 1 :(得分:1)

首先获取您的唯一ID,将名称对作为子查询,然后按名称汇总结果。

select name, COUNT(*) as count
from (
    select distinct id, name
    from mytable) as sq
group by name

答案 2 :(得分:0)

尝试在上面的评论中发帖,格式化并没有完全解决;这也有效:

SELECT t1.id FROM myTable t1, myTable t2
    WHERE t1.name LIKE t2.name AND t1.id != t2.id;

答案 3 :(得分:0)

选择name,count(id)作为used_in_recipes 从成分 按名称分组;

我们真的需要检查不同的ID吗? 为什么我需要在配方中重复相同的成分?

让我们按名称对它们进行分组。