初始表是这样的
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是选择具有不同ID但具有相同名称的行。换句话说,将用于更多食谱的成分
答案 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吗? 为什么我需要在配方中重复相同的成分?
让我们按名称对它们进行分组。