gpt4 book ai didi

MySQL 在引用表中使用 like 表达式

转载 作者:行者123 更新时间:2023-11-29 22:52:40 25 4
gpt4 key购买 nike

它是在数据库中搜索关键字,精确地在表 users 中,同时根据排名/分数对用户的姓名和电子邮件地址进行不同的加权。
这不应该是关于全文搜索,所以这是我的方法:

我想在整个数据库中搜索关键字“john”,它也会返回john,例如“johna”,加上姓名的权重应大于电子邮件地址:

select u.id,u.name,((u.name LIKE '%john%')*5 + (u.mail LIKE '%john%')*3) as score
from users u
having score > 0
order by score desc

假设有一个表user_has_kittens:

user_id  kitten_id
------------------
1 1
1 2
1 3
1 4
2 3
2 42

您已经了解了此表的用途:它定义了哪个用户拥有哪只小猫,当然您可以拥有任意数量的小猫。

此外,小猫的名字在表 kittens 中,列为 id,name

如何同时搜索小猫的名字并对其进行加权:关键字在小猫的名字中,然后给该用户评分加 1。

选择 [...] + SUM [ ( u's kitten's name like %john% )*1] ) 作为分数

例如澄清一下:

username, email,            (his/her kittens);   score
john, john@example.org, (johna, myjohn); 5+3+1+1 (user matches, mail matches, two kittens match)
linda, linda@john.org, (myjohn); 0+3+1 (user doesn't match, mail matches, one kitten matches)

顺便说一句。在学说中使用它是目标,但是普通的原生 MySql 也足够了。

最佳答案

不知道你的实际需求是什么。但我想我可以引导你走向正确的方向..

select u.id,u.name,( if(u.name LIKE '%john%', 5, 0) + if(u.mail LIKE '%john%', 3, 0)) as score

试试这个

关于MySQL 在引用表中使用 like 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28827691/

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