gpt4 book ai didi

mysql SQL查询比较整数和字符串

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

我在将字符串与数据库中不同表的整数列进行比较时遇到问题。

有一个数据库,其中有两个表作为类别和内容。现在,每个内容文本可以属于多个类别,这些类别列在内容表的category_ids 列中,以逗号分隔。我知道这还没有标准化。但它已经在那里了。

类别表

id | name | timestamp
1 aaa something
2 bbb something
3 ccc something
4 ddd something
5 eee something

内容表

id | category_ids | content | timestamp
1 1 xxx something
2 1,2,3,4 yyy something
3 1,2 zzz something
4 1,2,3 www something

现在我必须显示类别列表以及每个类别中内容文本的数量。表示其中使用该类别的内容文本的数量。注意(类别 eee 不存在于任何内容文本中,因此结果集中显示 0 计数。)

aaa(4)
bbb(3)
ccc(2)
ddd(1)
eee(0)

我尝试了很多方法来将类别表的 id 与内容表的category_ids 进行比较。但一个是整数,另一个是字符串。

我尝试的一种方法是强制转换函数,但失败了

SELECT C.id , C.Name, COUNT( * ) AS ContentCount FROM categories AS C LEFT JOIN content  AS Q ON (CAST(C.id AS CHAR) = (Q.category_ids))  GROUP BY C.Name

请不要告诉我更改数据库的方法。如果有任何关于如何编写一个查询来提供这种结果集的想法,我们将不胜感激。

最佳答案

数据库中的 CSV 是有史以来最糟糕的主意。
它将扼杀任何使用索引的机会。它没有标准化。速度很慢。
它会一次又一次地咬你。

SELECT C.id , C.Name, COUNT( * ) AS QuotesCount 
FROM categories AS C
LEFT JOIN quotes AS Q ON (FIND_IN_SET(c.id,Q.category_ids))
GROUP BY C.Name

参见:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

关于mysql SQL查询比较整数和字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7496160/

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