【发布时间】:2017-10-14 02:34:44
【问题描述】:
表POST:
postId Tag Author
-----------------------
1 A,B x,y
2 B,C,D x
3 C,D y
问题:
如何选择逗号分隔字符串中 Tag='B' 的记录?从上面的例子中它应该返回记录 1,2。
如何选择 Tag='B' 和 Author='y' 的记录?返回的记录应该是1。
顺便说一句:如果我将数据库方案重新设计为三个表POST、TAG 和AUTHOR,然后通过内连接子句查询所需的记录。与前一种方法相比,哪种方法性能更好?表POST一共有1万条记录。
【问题讨论】:
-
如果您想在列表中搜索列表,则不能在字符串级别执行此操作!如果您想在
A,B,C,D中找到A,这很容易,与B,C相同。但是C,B或A,C呢?这些值必须存储在单独的表中。在您的情况下,我建议使用经典的m:n设计,其中包含用于帖子、标签和作者的表以及它们之间的映射表。顺便说一句:10.000 条记录并不多......
标签: sql sql-server json xml