这是我编写的查询,它有两次相同的几行。我怎样才能避免这种情况?
SELECT
artistID, bio
FROM
UserReactionToArtistView
WHERE
genre = 'classical' AND type = 'like' AND bio LIKE '%Rerum%'
GROUP BY
artistID
HAVING
COUNT(*) = ( SELECT MAX(num) as max
FROM
(
SELECT
artistID, bio, count(*) as num
FROM
UserReactionToArtistView
WHERE
genre = 'classical' and type = 'like' AND bio LIKE '%Rerum%'
GROUP BY
artistID ) as Artists
)
很抱歉,如果此格式错误或不是提问的地方。
最佳答案
由于您想通过 num
列上具有 最大值 的行来过滤最内部的查询,我认为您可以执行以下操作:
SELECT
Artists.artistID,
Artists.bioo
FROM
(
SELECT
artistID,
-- Next line can be replaced by ANY_VALUE(bio) on newer versions of MySQL.
MAX(bio) AS bioo,
count(*) AS num
FROM
UserReactionToArtistView
WHERE
genre = 'classical'
AND
type = 'like'
AND
bio LIKE '%Rerum%'
GROUP BY
artistID ) AS Artists
WHERE
Artists.num = (SELECT MAX(num) FROM Artists);
关于mysql - 有没有办法简化这个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53347805/