初始表是这样的SQL选择具有相同的字段值的行
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是选择具有不同的ID,但具有相同的名称的行。换句话说,将在更多食谱中使用的成分
初始表是这样的SQL选择具有相同的字段值的行
id name count
1 chocolate 5
1 cheeze 3
2 pepperoni 2
2 potatoes 1
2 cheese 7
3 dirty sock 2
我想要的是选择具有不同的ID,但具有相同的名称的行。换句话说,将在更多食谱中使用的成分
首先将您的唯一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; – user2089674 2013-02-20 04:59:44
本来是甜的,但配方表没有列出的成分 – morgred 2013-02-20 05:15:43
这很奇怪,但是这个被接受的答案不同意这个问题,甚至没有接近:[SQLFiddle](http://www.sqlfiddle.com/#! 3/506d8/8) - 它显示整体使用过的成分。有问题,你要求重复。 – mvp 2013-02-20 05:21:43
如果我理解正确,你想按名称选择重复。在你的例子中,如果你使用了相同的拼写,应该是cheese
(但你没有 - 是否错误?)。
假设我是正确的,这应该工作(SQLFiddle DEMO):
SELECT * FROM mytable
WHERE [name] IN (
SELECT [name]
FROM mytable
GROUP BY [name]
HAVING count(*) > 1
)
是的,你说得对 – morgred 2013-02-20 05:17:14
选择的名称,数(ID)按名称 组used_in_recipes从成分 ;
我们真的需要检查一个不同的ID吗? 为什么我需要在配方中重复相同的成分?
让我们按名称对它们进行分组。
那么只需按名称选择?我一定是误解了这个问题。在你的例子中, – 2013-02-20 04:56:44
所有名称都不相同,即使是'cheese'!='cheeze'。你能举出更详细的例子吗? – mvp 2013-02-20 05:04:30