【发布时间】:2023-03-10 22:52:01
【问题描述】:
我有两张桌子。
用户,包含 UserId、Area 列
Area 列填充了多个逗号分隔值(来自列表框) - 数据如下所示:
User1 KA,TN,AP,GJ
User2 MH,UP,MP,GJ
Order,包含 OrderID、ProductID、Qty、Area 列
数据如下所示:
1 Prod1 10 GJ
2 Prod1 22 MH
3 Prod2 3 AP
4 Prod2 77 TN
如何根据User表从Order表中选择行?
假设登录用户是User1。他的区域是KA,TN,AP,GJ。
结果应该是这样的:
Prod1 10 GJ
Prod2 77 TN
请就获得此结果的 SQL 查询提出建议。
感谢和问候 克里希纳
【问题讨论】:
-
如果你的数据被规范化了会容易很多。为什么要将多个值作为一个字符串 blob 存储在单个字段中?
-
永远不要将数据存储为逗号分隔的项目。只会给你带来很多麻烦。
-
阅读Is storing a delimited list in a database column really that bad?,您会在其中看到为什么这个问题的答案是绝对是的!
-
为什么结果集中缺少第三条记录?区域“AP”也链接到“User1”。
标签: sql sql-server