【问题标题】:Checking for multiple values with in same column检查同一列中的多个值
【发布时间】:2015-07-24 17:13:51
【问题描述】:

这就是我的数据库表结构的样子 -

ID fieldname fieldvalue
1   country   USA
2   language  English
3   country   India
4   language  Hindi

所以我想选择fieldname 是“国家”和fieldvalueUSAfieldnamelanguagefieldvalueEnglish 的行。

基本上根据键/值对按多个值进行过滤。

我尝试过使用 AND 关键字,但它什么也没返回

有什么线索吗?

【问题讨论】:

  • 这样的通用设计是一种数据库设计,如果不是真的非常必要的话,它会避免。也许你应该改变你的设计,这样写查询会容易得多。
  • @ThorstenKettner 我同意

标签: mysql sql filter


【解决方案1】:

尝试使用OR操作符如下

select *
from tab
where (fieldname = 'country' and  fieldvalue = 'USA')
or (fieldname = 'language' and  fieldvalue = 'English')

【讨论】:

  • 是的,但问题是它会返回任何一个国家是美国或语言是英语,对吧?
  • @nope,如果存在字段名称或字段值,则返回项目。
  • @user2475624 你期望结果是什么?
  • @user2475624 所以这与你问的问题完全不同。我需要查看一个查询,才能为您提供帮助。
  • @user2475624:不,你不应该继续聊天。你问了一个问题并得到了答案,你应该接受它。正如帕拉多刚才所说,你现在要问的问题与手头的问题完全不同,所以你最好在新的请求中提出一个新的问题。
【解决方案2】:

字段名不能同时是“国家”和“语言”。但是如果你使用 OR,它们都是真的。

SELECT *
FROM table
WHERE ( fieldname = 'country' AND fieldvalue = 'USA' )
   OR ( fieldname = 'language' AND fieldvalue = 'English');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2018-05-13
    • 2017-05-21
    • 2013-08-27
    • 1970-01-01
    相关资源
    最近更新 更多