gpt4 book ai didi

mysql - sql设置类型匹配

转载 作者:行者123 更新时间:2023-11-29 12:09:35 25 4
gpt4 key购买 nike

我有一个表articles,其中有一列的类型为SET,名为categories。我们假设它接受来自 cat1、cat2、cat3、cat4 集合的值。这是一个直观的表示:

articleTitle | categories (of type SET) | ID
--------------------------------------------
Socializing | cat1 | 1
Programming | cat1,cat2 | 2
Sports | cat1,cat2,cat3 | 3
Hiking | cat2 | 4
Nutrition | cat1 | 5
Health | cat1,cat2,cat4 | 6

1. 我想要执行 SQL select 来返回前 n 行的文章名称,其中 val1 参数与 categories 列中的任何值匹配。 例如: 如果 val1=cat1 那么结果将是社交、编程、运动、营养、健康

2. 我还想执行 SQL select 查询来确定 val1, val2 是否与 中的两个值匹配类别 列。 例如: 如果 val1=cat1 AND val2=cat2 那么结果将是编程、运动、健康

3. 最后,最好执行一个查询,返回 类别< 中匹配数量最多的文章的前 n 列 - 表示全部匹配项取代部分匹配项,并且值列表中的第一个匹配项优先于第二个例如: 如果 val1=cat1 AND val2=cat2 AND val3=cat3 AND numerOfRows=4 那么结果将是运动、编程、健康、社交;

我该如何去做呢?是否有可能或者我是否需要运行多个查询 - 我想在多个查询场景中,计数和匹配逻辑将留给后端,而我一次只做一件事?仍然希望在前两种情况下获得帮助。

如果需要澄清,请询问,我会修改问题。

最佳答案

重新阅读问题后进行编辑,现在是正确的。下面的 SQL fiddle : http://sqlfiddle.com/#!9/65c5b/7

问题1:

SELECT * FROM articles WHERE categories like '%a%' LIMIT 0, 5;

问题2:

SELECT * FROM articles WHERE categories like '%a,b%';

问题3:

SELECT * FROM articles WHERE categories LIKE '%a%' or 
categories LIKE '%b%' or
categories LIKE '%c%' or
categories LIKE '%d%'
order by FIND_IN_SET('a',categories )
+ FIND_IN_SET('b',categories )
+ FIND_IN_SET('c',categories )
+ FIND_IN_SET('d',categories ) desc
LIMIT 0, 5;

我从变量中省略了实际的 CONCAT 函数,因为我不知道这是否在 php、sql 或其他应用程序中,但我认为这绝对足以了解它的要点。如果不是请告诉我。

关于mysql - sql设置类型匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919902/

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