gpt4 book ai didi

MySQL 根据其他表的匹配对查询进行排序

转载 作者:行者123 更新时间:2023-11-29 17:30:02 25 4
gpt4 key购买 nike

我有下表:

  • 新闻(ID、标题...)
  • news_exchange_relations(id、news_id、exchange_id)
  • news_currency_relations(id、news_id、currency_id)
  • news_country_relations(id、news_id、country_id)

我有一个包含三个参数的搜索表单:交易所、货币和国家/地区。我的目标是通过选择一些参数来找到与所选参数最相关的新闻。

示例:如果用户指定了 X 参数,我想显示与至少一个参数匹配的所有新闻,但首先我将显示与 X 参数匹配的新闻,而不是 X-1 等。

详细示例:

新闻:

1, title 1
2, title 2
3, title 3

新闻交流关系:

1, 1, 1
2, 2, 1

新闻国家关系:

1, 1, 1
2, 2, 1

新闻货币关系:

1, 1, 1
2, 2, 2

搜索参数:

Country =1, exchange = 1, currency = 1

结果:

Id | title | matches
1, title1, 3
2, title2, 2

是否可以只使用 MySQL 来实现这一点?

最佳答案

你可以从这个开始:

create table want as
select a.*,
(case when b.id is null then 0 else 1 end) + (case when c.id is null then 0 else 1 end) + (case when d.id is null then 0 else 1 end) as matches
from
news a
left join
(select * from news_exchange_relations
where exchange_id = 1) b
on a.id = b.id
left join
(select * from news_currency_relations
where currency_id = 1) c
on a.id = c.id
left join
(select * from news_country_relations
where country_id = 1) d
on a.id = d.id
having matches > 0;

如有任何澄清,请告诉我。

关于MySQL 根据其他表的匹配对查询进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50731758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com