我正在尝试为SQLite3中的每棵树存储一个每月的开花季节。目前我有一个字段" month“,然后我将月份名称存储在这个字段中。例如
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我不确定这是否是最好的存储方式,任何建议都是值得感谢的。
其次,我需要在输入月份的地方执行查询,它应该返回匹配搜索条件的树名称。例如
如果我搜索
"Jan" 结果应为Tree1、Tree2、Tree3、Tree5
"Jan,Feb,Mar"结果应为Tree1、Tree3、Tree5
"Jan,Feb,Mar,Apr"结果应为Tree5
"Sep,Oct,Nov,Dec"结果应为none
我必须使用哪个SQL查询才能获得上述结果?
谢谢
发布于 2012-09-21 17:47:31
您可以通过以下方式使用Group_concat:
SELECT Group_concat(name) AS [tree name]
FROM tree
WHERE month LIKE '%Jan,Feb,Mar%'查看
发布于 2012-09-21 17:35:56
不是的。这不是存储它的最佳方式。
你应该规范化你的数据,并且每行存储一个月/树
Tree1 Jan
Tree1 Feb
Tree1 Mar
Tree2 Nov
Tree2 Dec
Tree2 Jan
....(或者将月份存储为数字1-12)
然后你就可以
select treename from TreeBlooming where month = 'jan'和
select treename from TreeBlooming
where month in ('jan','feb')
group by treename
having count(distinct month)=2https://stackoverflow.com/questions/12527871
复制相似问题