0

初始表是这样的

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

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

4

4 回答 4

2

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

假设我做对了,这应该可以工作(SQLFiddle DEMO):

SELECT * FROM mytable
WHERE [name] IN (
    SELECT [name]
    FROM mytable
    GROUP BY [name]
    HAVING count(*) > 1
)
于 2013-02-20T05:10:22.723 回答
1

首先获取您的唯一 id,名称对作为子查询,然后按名称聚合结果。

select name, COUNT(*) as count
from (
    select distinct id, name
    from mytable) as sq
group by name
于 2013-02-20T04:56:36.213 回答
0

试图在上面的评论中发帖,格式不太好;这也有效:

SELECT t1.id FROM myTable t1, myTable t2
    WHERE t1.name LIKE t2.name AND t1.id != t2.id;
于 2013-02-20T05:00:15.783 回答
0

按名称从成分组中选择名称、计数(id)作为 used_in_recipes;

我们真的需要检查不同的 id 吗?为什么我需要在食谱中重复相同的成分?

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

于 2013-02-20T05:23:52.743 回答