首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SQLite中存储/查询多个值

在SQLite中存储/查询多个值
EN

Stack Overflow用户
提问于 2012-09-21 17:32:14
回答 2查看 92关注 0票数 1

我正在尝试为SQLite3中的每棵树存储一个每月的开花季节。目前我有一个字段" month“,然后我将月份名称存储在这个字段中。例如

代码语言:javascript
复制
Tree Name     Month

Tree1         Jan,Feb,Mar
Tree2         Nov,Dec,Jan
Tree3         Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
Tree4         Mar,Apr,Nov,Dec
Tree5         Jan,Feb,Mar,Apr

我不确定这是否是最好的存储方式,任何建议都是值得感谢的。

其次,我需要在输入月份的地方执行查询,它应该返回匹配搜索条件的树名称。例如

如果我搜索

代码语言:javascript
复制
 "Jan" 

结果应为Tree1、Tree2、Tree3、Tree5

代码语言:javascript
复制
 "Jan,Feb,Mar"

结果应为Tree1、Tree3、Tree5

代码语言:javascript
复制
 "Jan,Feb,Mar,Apr"

结果应为Tree5

代码语言:javascript
复制
 "Sep,Oct,Nov,Dec"

结果应为none

我必须使用哪个SQL查询才能获得上述结果?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-21 17:47:31

您可以通过以下方式使用Group_concat

代码语言:javascript
复制
SELECT Group_concat(name) AS [tree name] 
FROM tree 
WHERE month LIKE '%Jan,Feb,Mar%'

查看

票数 2
EN

Stack Overflow用户

发布于 2012-09-21 17:35:56

不是的。这不是存储它的最佳方式。

你应该规范化你的数据,并且每行存储一个月/树

代码语言:javascript
复制
Tree1         Jan
Tree1         Feb
Tree1         Mar 
Tree2         Nov
Tree2         Dec
Tree2         Jan
....

(或者将月份存储为数字1-12)

然后你就可以

代码语言:javascript
复制
select treename from TreeBlooming where month = 'jan'

代码语言:javascript
复制
select treename from TreeBlooming
where month in ('jan','feb')
group by treename
having count(distinct month)=2
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12527871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档