初始表是这样的
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是选择具有不同 id 但具有相同名称的行。换句话说,将在更多食谱中使用的成分
初始表是这样的
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是选择具有不同 id 但具有相同名称的行。换句话说,将在更多食谱中使用的成分
如果我理解正确,您想按名称选择重复项。在您的示例中,cheese
如果您使用相同的拼写应该是这样的(但您没有 - 这是错误的吗?)。
假设我做对了,这应该可以工作(SQLFiddle DEMO):
SELECT * FROM mytable
WHERE [name] IN (
SELECT [name]
FROM mytable
GROUP BY [name]
HAVING count(*) > 1
)
首先获取您的唯一 id,名称对作为子查询,然后按名称聚合结果。
select name, COUNT(*) as count
from (
select distinct id, name
from mytable) as sq
group by name
试图在上面的评论中发帖,格式不太好;这也有效:
SELECT t1.id FROM myTable t1, myTable t2
WHERE t1.name LIKE t2.name AND t1.id != t2.id;
按名称从成分组中选择名称、计数(id)作为 used_in_recipes;
我们真的需要检查不同的 id 吗?为什么我需要在食谱中重复相同的成分?
让我们按名称对它们进行分组。