我想使用表“相似”中的数据来查找表“发布”中的结果
表“相似”具有这种结构
artist similar_artist
Moodymann Theo Parrish
Moodymann Jeff Mills
Moodymann Marcellus Pittman
Moodymann Rick Wilhite
到目前为止我的查询是
SELECT * FROM releases
WHERE
releases.all_artists REGEXP 'Moodymann'
OR releases.label_no_country='KDJ'
OR releases.all_artists IN (SELECT similar_artist
FROM similar
WHERE artist='Moodymann')
ORDER BY date DESC
“all_artists”列有这样的记录:
Moodymann | Theo Parrish | Rick Wade
Jeff Mills | Moodymann | Rick Wilhite
所以我想要的最终查询基本上是这个
SELECT * FROM releases
WHERE
releases.all_artists REGEXP 'Moodymann'
OR releases.label_no_country='KDJ'
OR releases.all_artists IN ('Theo Parrish','Jeff Mills','Marcellus Pittman','Rick Wilhite')
为了进行匹配,我认为我需要使用 REGEXP 而不是 IN - REGEXP 返回“子查询返回超过 1 行”。如何使用子查询返回的数据?
此外,查询需要很长时间才能运行(最多 20 秒) - 无论如何都可以加快速度,因为这在我的网络应用程序中不可用。
谢谢!