SQL SELECT 仅包含单词的字段
Posted
技术标签:
【中文标题】SQL SELECT 仅包含单词的字段【英文标题】:SQL SELECT only field where it contains words 【发布时间】:2018-03-03 22:44:45 【问题描述】:我有兴趣做某事like in this question,如果该列实际上包含给它的所有单词,我只会得到结果。
例如,如果我有两列,一列是时间戳,另一列是天气,我只想获取天气为 cloudy
、rainy
、snowy
的时间戳,而不是如果它只有cloudy
、rainy
。上面的一个例子有点像:
SELECT distinct timestamp FROM mytable
WHERE Weather LIKE 'snowy'
OR Weather LIKE 'cloudy'
OR Weather LIKE 'rainy'
这会返回类似:
2017-09-22 snowy
2017-09-22 snowy
2017-09-22 cloudy
2017-09-22 rainy
2017-09-22 cloudy
但没有任何结果from 2017-09-21
,因为那天可能只有snowy
和rainy
等等。
只要天气符合条件,我上面执行的示例查询将返回所有时间戳。
【问题讨论】:
用您正在使用的数据库标记您的问题。 【参考方案1】:您可以使用group by
和having
。我会推荐:
SELECT timestamp
FROM mytable
WHERE Weather IN ('snowy', 'cloudy', 'rainy')
GROUP BY timestamp
HAVING COUNT(DISTINCT Weather) = 3; -- get all of them
如果表中的timestamp
/Weather
没有重复项,则使用COUNT(*) = 3
而不是COUNT(DISTINCT)
。
【讨论】:
【参考方案2】:你可以像下面这样使用,
选择时间戳 来自我的表 WHERE Weather IN ('snowy', 'cloudy', 'rainy')
输出: 例子
1
2
3
虚拟表
1 下雪
2 多云
3 下雨
4 啊啊
5 bbbb
【讨论】:
这实际上并不能回答问题。以上是关于SQL SELECT 仅包含单词的字段的主要内容,如果未能解决你的问题,请参考以下文章
Bigquery SQL SELECT WHERE 字段包含来自其他表的许多单词
SQL Server判断某个字段是否包含中文/英文字符/数字