mysql - 有没有办法简化这个查询?

标签 mysql mysql-workbench

这是我编写的查询,它有两次相同的几行。我怎样才能避免这种情况?

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/

相关文章:

MYSQL Performance Tuning with group by 子句

mysql 错误代码 : 1066. 不唯一的表/别名: 't2'

mysql - 导入数据时mysql中的quotechar是什么意思?

mysql - 系统变量 "MESSAGE_TEXT"不适用于 Mysql 5.6 中的 SIGNAL 语句?

mysql - 如何将sql中AVG函数的小数位限制为2位?

php - 如何将印地语文本保存为 JSON

mysql - 列表中不在表中的 ID

mysql SELECT IN 后跟逗号分隔字段

java - 如何解决 'java.sql.SQLException: Column count doesn' t match value count at row 1' 错误?

mysql - 具有多列子查询的SQL笛卡尔积,未知列问题