【问题标题】:SQL SELECT only field where it contains wordsSQL SELECT 仅包含单词的字段
【发布时间】: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 等等。

只要天气符合条件,我上面执行的示例查询将返回所有时间戳。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql sql-server


【解决方案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

    【讨论】:

    • 这实际上并不能回答问题。
    猜你喜欢
    • 2012-12-26
    • 2013-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    相关资源
    最近更新 更多