gpt4 book ai didi

mysql - 如何获取具有多个条件的查询结果?

转载 作者:可可西里 更新时间:2023-11-01 08:36:27 25 4
gpt4 key购买 nike

我有一张这样的 table

Table
-----
userid
fieldid
fieldvalue

其中 userid 和 fieldid 是该表的主键对。

我想进行一个 sql 查询,查找所有 fieldvalue 等于所选 fieldid 的用户

例如,对于值

fieldid: 817
fieldvalue: 'yes'

我可以有一个像这样的 sql 查询:

select userid FROM table where (fieldid=817 AND fieldvalue='yes') 

这个查询工作正常。

但是,如果我有第二个或第三个标准,则进行查询像这样:

select userid 
FROM table
where (fieldid=817 AND fieldvalue='yes')
AND (fieldid=818 AND fieldvalue='no')

返回一个空结果,但条件满足个人标准。

有什么办法可以解决这个问题吗?

更新

我忘了写下一个用例(appologies)

userid, fieldid, fieldvalue
1 , 817, yes
1, 818, no
1, 825, yes
2, 817, yes
2, 818, yes
3, 829, no

对于此表,我需要一个 sql 查询来查找满足以下条件的用户:fieldid 817 的值为 yes,fieldid 818 的值为 no

使用 OR 建议,到目前为止我已经满足 fieldid 817 的值为 yes 或 fieldid 818 的值为 no

我希望这两个条件都得到满足。在上面的预期结果将是

userid
1

不是

userid
1
2

因为 userid 2 不满足这两个条件。对造成的困惑表示歉意。

最佳答案

您应该在不同的条件之间使用OR

SELECT userid 
FROM table
WHERE (fieldid=817 AND fieldvalue='yes')
OR (fieldid=818 AND fieldvalue='no')

使用AND/OR的区别

The AND operator displays a record if both the first condition and the second condition is true.

The OR operator displays a record if either the first condition or the second condition is true.

编辑:根据您的评论,您可以按照以下方式进行

select t1.userid 
FROM temp t1
where (t1.fieldid=817 AND t1.fieldvalue='yes')
AND EXISTS (SELECT userid
FROM temp t
WHERE t.userid = t1.userid
AND fieldid=818
AND fieldvalue='no')

查看 sqlfiddle带有工作副本

甚至这样

select t1.userid 
FROM temp t1
left join temp t2
on t1.userid = t2.userid
where (t1.fieldid=817 AND t1.fieldvalue='yes')
AND t2.fieldid=818 AND t2.fieldvalue='no'

这是另一个sqlfiddle

如果您想加入更多领域,那么您将执行以下操作:

select t1.userid 
FROM temp t1
left join temp t2
on t1.userid = t2.userid
left join temp t3
on t1.userid = t3.userid
where (t1.fieldid=817 AND t1.fieldvalue='yes')
AND (t2.fieldid=818 AND t2.fieldvalue='no')
AND (t3.fieldid=819 AND t3.fieldvalue='no')

关于mysql - 如何获取具有多个条件的查询结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10383572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com