我有一个MySQL表,其中包含以下列和记录:
| Name | Total | GivenBy |
| ---- | -------- | ------------ |
| Z | 200 |['A','B','C'] |
| X | 240 |['A','D','C'] |
我想在第3列的基础上提取记录1,其中SQL查询如下所示:
SELECT * FROM mytable WHERE GivenBy='B';
有没有一种方法可以循环遍历第三列中的列表,并在单个查询中取出SQL WHERE子句中所需的相应字符串?
请注意,我无法在表中添加更多列。
如果你能提供MySQL兼容的查询,我将不胜感激。
3条答案
按热度按时间dohp0rv51#
您显示的“数组”不是完全有效的JSON,但是如果您使用双引号而不是单引号,则可以使用JSON_TABLE()来完成此操作:
但是最好的选择不是在MySQL中存储“数组”,而是在第二个表中每行存储一个值。
k97glaaz2#
您可以在regex中使用“like”关键字来匹配第三列中的需求。
从给定的表格中选择 *,如“%B%";
类似的方法也可以。
vs3odd8k3#
您需要运行一个脚本:
1.使用以下查询检索
GivenBy
列中的唯一值列表:1.循环遍历唯一值列表,对于每个值,运行在
WHERE
子句中使用该值的查询: