【问题标题】:musicbrainz unable to count artists by countrymusicbrainz 无法按国家/地区统计艺术家
【发布时间】:2023-03-15 02:14:01
【问题描述】:

您好,我正在使用 musicbrainz 数据库,我无法计算每个国家/地区的所有艺术家,但无论我尝试哪个国家/地区,我都会遇到相同的错误,即使我尝试使用 like 也是如此。请问谁能告诉我我做错了什么?

错误:列“%u%”不存在第 7 行:WHERE AREA.NAME LIKE “%u%”

SELECT COUNT(artist.name)
FROM artist
JOIN area ON artist.area = area.id 
JOIN label ON area.id = label.area
JOIN country_area ON area.id = country_area.area
JOIN release_country ON country_area.area = release_country.country
WHERE AREA.NAME LIKE "%dom"
GROUP BY release_country.country
limit 5;

更新:

musicbrainz_db=> SELECT COUNT(artist.name)
musicbrainz_db-> FROM artist
musicbrainz_db-> JOIN area ON artist.area = area.id
musicbrainz_db-> JOIN label ON area.id = label.area
musicbrainz_db-> JOIN country_area ON area.id = country_area.area
musicbrainz_db-> JOIN release_country ON country_area.area = 
release_country.country
musicbrainz_db-> WHERE AREA.NAME LIKE '%dom'
musicbrainz_db-> GROUP BY release_country.country
musicbrainz_db-> limit 5;

错误:由于语句超时而取消语句

我的老师刚过来说没有子查询就不行?

select area.name, label_count
from area
where label_count in 
(
    select area.name, count(label.id) as "label_count"
    from area
    JOIN label on area.id = label.area
    group by area.name
);

子查询工作正常,但主查询失败?知道为什么。

【问题讨论】:

  • 显示更多代码..请。显示您使用此查询的代码
  • 尝试使用单引号而不是双引号。此外,您通常(几乎总是?)希望将 SELECT TOP 与 LIMIT 语句一起使用。
  • 我在终端中运行它到内部服务器,这就是所有代码。
  • 你的老师是对的。您的第三次连接不在区域和另一个表之间,因此不会执行。第三个连接需要一个子查询,前两个连接需要一个主查询

标签: mysql sql musicbrainz


【解决方案1】:
SELECT COUNT(artist.name)
FROM artist
JOIN area ON artist.area = area.id 
JOIN label ON area.id = label.area
JOIN country_area ON area.id = country_area.area
JOIN release_country ON country_area.area = release_country.country
WHERE AREA.NAME LIKE '%u%'
GROUP BY release_country.country
limit 5;

【讨论】:

    【解决方案2】:

    见 MySQL 官方文档

    https://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html

    用单引号试试

    SELECT COUNT(artist.name)
    FROM artist
    JOIN area ON artist.area = area.id 
    JOIN label ON area.id = label.area
    JOIN country_area ON area.id = country_area.area
    JOIN release_country ON country_area.area = release_country.country
    WHERE AREA.NAME LIKE '%dom'
    GROUP BY release_country.country
    limit 5;
    

    双引号用于列名

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多