【问题标题】:SQL check if row contains set of values [duplicate]SQL检查行是否包含一组值[重复]
【发布时间】:2018-11-13 05:56:34
【问题描述】:

我有一个如下数据库:

我现在想检查该表中的每一行是否包含一组数据。像这样:我想查询以下字母:A, B
这应该返回以下行:res1, res4
这是因为 res1res4 在其中一列中包含值 AB

这个逻辑也适用于这种情况:
如果我只查询字母B,则查询必须返回以下行:res1, res2, res4

所以我想要发生的是查询检查列valsx, valsy, valsz, valsq,如果其中任一列包含查询值之一。如果所有查询的值都存在于行(四列)中,则返回该行。

我不知道如何使用 SQL 来做到这一点。我试过了 select * from table where valsx contains b or valsy contains b or valsz contains b or valsq contains b

如果有任何不清楚的地方,请告诉我,以便我澄清。

【问题讨论】:

    标签: php mysql sql row multiple-columns


    【解决方案1】:

    你可以使用in:

    select t.*
    from t
    where 'A' in (valsx, valsy, valsz, valsq) and
          'B' in (valsx, valsy, valsz, valsq);
    

    【讨论】:

    • 很好,这正是我所需要的,谢谢!
    • 快速提问t.* 指的是哪里?
    • @FutureCake 。 . .它引用from 子句中定义的t 表中的所有列。
    • 我也不能使用select * from 有什么区别?
    • @FutureCake 。 . . t 限定列引用。只有一张桌子就不需要了。但限定所有列引用是一个好习惯。
    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2018-04-23
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 2021-06-06
    • 2019-10-03
    • 1970-01-01
    相关资源
    最近更新 更多