如何使用选择查询比较数据库列中逗号分隔值中的单个值?
我有一个值,例如“1”,并且我的数据库表“tbl_grp
”中有列“grp_id
”。此列“grp_id
”包含逗号分隔的值,例如“1,2,3
”我正在寻找一种方法将我的单个值与列“grp_id”进行比较
”。
现在我正在使用以下查询:
"SELECT user_id, user_fname, user_lname FROM tbl_grp WHERE grp_id='1'";
I have a value say for example "1" and I Have column "grp_id
" in my db table "tbl_grp
". This column "grp_id
" contains the commaseperated values as example "1,2,3
" I am looking for a way to compare my single value with column "grp_id
".
right now I am using the below query:
"SELECT user_id, user_fname, user_lname FROM tbl_grp WHERE grp_id='1'";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您的数据不是第一范式。如果您遵循第一范式的规则,您将拥有对所有数据的密钥访问权限。某些查询可能仍会导致表扫描,但不是这种。
不要将 CSV 用于可搜索项目。将该字段分解为 1NF 等价字段。
正如另一个答案所说,这不是多对多关系。这是一对多。
Your data is not in First Normal Form. If you follow the rules for first normal form, you will have keyed access to all data. Some queries might still result in a table scan, but not this kind.
Don't use CSV for searchable items. Decompose this field into a 1NF equivalent.
It's not a many-to-many relationship as another answer said. It's a one-to-many.
你可以
FIND_IN_SET
:
但是正确的方法是在用户和组之间建立多对多关联,而不是将逗号分隔的 id 列表存储在列中:
You could you
FIND_IN_SET
:But the correct way to do this, instead of storing a comma-separated list of ids in a column, is to have a many-to-many association between your users and groups:
您正在寻找 FIND_IN_SET:
You're looking for FIND_IN_SET:
试试这个,
从 tbl_grp WHERE grp_id LIKE '1' 中选择 user_id、user_fname、user_lname;
尝试一下,我不是数据库大师,但最好我可以建议这个。
Try This,
SELECT user_id, user_fname, user_lname FROM tbl_grp WHERE grp_id LIKE '1';
try i am no master in db, but best i can suggest this.