mysql - 如果列在mysql中有多个用逗号分隔的值,如何传入where条件
问题描述
#id name product_id
1 chalam 1,2
2 satish 2,3
3 siva 3,4
4 gowtham 2,4
select id, name where product_id in(3);
预期输出:
satish
siva
解决方案
你可以FIND_IN_SET
在这里使用:
SELECT id, name
FROM yourTable
WHERE FIND_IN_SET('3', product_id) > 0;
请注意,虽然 MySQL 巧合地提供FIND_IN_SET
了可以在 CSV 字符串中搜索值的功能,但通常我们应该避免使用此功能。在表中存储 CSV 数据是糟糕的数据库设计。相反,您应该规范化您的数据。以下是标准化表的示例:
id | name | product_id
1 | chalam | 1
1 | chalam | 2
2 | satish | 2
2 | satish | 3
3 | siva | 3
3 | siva | 4
4 | gowtham | 2
4 | gowtham | 4
假设给定的名称/id 只与product_id
上表中给定的一次相关联,您可以将查询简化为:
SELECT id, name
FROM yourTable
WHERE product_id = 3;
推荐阅读
- html - w3.css 与 SharePoint 兼容吗?
- node.js - Sequelize 区分大小写的查询
- json - Reactjs - 如何使用列表子对象创建 JSON?
- sql - 将重音字符替换为非重音字符 + Oracle 中的“撇号”
- android - 如果我们使用 MVVM 和 HILT 的依赖注入,如何从片段中的 recyclerview 适配器导航到另一个片段
- azure - Azure AD 中的图片
- next.js - Next.js getInitialProps 未在 index.js 页面上呈现
- google-apps-script - Google-Apps-Script For 循环
- java - java.lang.NoClassDefFoundError:无法初始化类 io.netty.handler.ssl.JdkSslClientContext
- javascript - 将基本样式加载到 shadow-dom