将多个值存储在单个单元格中,而不是存储在不同的行中

时间:2013-08-31 11:19:20

标签: mysql sql

有没有办法可以在单个单元格中存储多个值而不是不同的行,并搜索它们?

我可以这样做:

pId | available
1   | US,UK,CA,SE
2   | US,SE

代替:

pId | available
1   | US
1   | UK
1   | CA
1   | SE

然后执行:

select pId from table where available = 'US'

2 个答案:

答案 0 :(得分:4)

可以这样做,但它会使查询效率低下。您可以在字段中查找子字符串,但这意味着查询无法使用任何索引,如果表中有许多行,这是一个很大的性能问题。

这是您在特殊情况下使用两个字符代码的方式:

select pId from table where find_in_set('US', available)

将值保存在单独的记录中会使您使用值的每个操作(如过滤和连接)更有效。

答案 1 :(得分:0)

你可以使用like运算符来获得结果

Select pid from table where available like '%US%'