在MySQL中找到重复的行,这个查询应该会失败,但它会返回一些东西:什么?
在Oracle中,它会失败,因为hr_descr2有十几个列,所以查询是无效的,但在MySQL上,它会返回一个结果集,但不是我期望的结果集。我认为它类似于第二个查询返回的结果集,但它更像是一个select*在MySQL中找到重复的行,这个查询应该会失败,但它会返回一些东西:什么?,mysql,Mysql,在Oracle中,它会失败,因为hr_descr2有十几个列,所以查询是无效的,但在MySQL上,它会返回一个结果集,但不是我期望的结果集。我认为它类似于第二个查询返回的结果集,但它更像是一个select* select * from hr_descr2 ds2 group by ds2.titolo having count(1) > 1 order by titolo; select titolo, count(1) from hr_descr2 ds2 group by ds2.t
select *
from hr_descr2 ds2
group by ds2.titolo
having count(1) > 1
order by titolo;
select titolo, count(1)
from hr_descr2 ds2
group by ds2.titolo
having count(1) > 1
order by titolo;
我希望查询能够做到这一点:
SELECT
*
FROM
hr_descr2
WHERE
titolo IN (SELECT
titolo
FROM
hr_descr2 ds2
GROUP BY ds2.titolo
HAVING COUNT(1) > 1)
ORDER BY titolo;
由于您指示第一个查询可以工作,因此我将假定
hr_descr2
表只有一列:titolo
。否则,它将抛出一个错误,因为与group by
一起使用的是非聚合值
因此,它返回一个不同的
titolo
值列表,这些值是重复的,并告诉您它们发生了多少次。也许您可以告诉我们您希望它做什么?对我来说:从表hr\u descr2
中选择属性(?)ds2
,按列ds2进行分组。titolo
包含多个1
,按titolo
@Jonast92排序:添加了预期行为,但我想知道的是:mysql的创建者预期做什么。。。在oracle中不是有效的queryNo!这就是奇怪的事情。这张桌子有十几根柱子。该查询不应该工作,但我发现它只从每个重复记录中的一个打印每个值。请尝试不要使用select*
。精确地指定您想要的内容。