Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何基于多行获取列值?_Mysql - Fatal编程技术网

Mysql 如何基于多行获取列值?

Mysql 如何基于多行获取列值?,mysql,Mysql,我想检查uid同时等于1和2的行,如果是,则返回cid。在本例中,只有2个,但如果您知道返回CID的方法超过2个,那也太好了 当我知道两个uid值时,如何最容易地获得cid=5的值?(1,2)。 对于伪sql,我的想法类似于选择cid,其中uid=1或uid=2 这将返回uid为1或2的所有行。我怎样才能限制为或语句以及和? 选择uid=1和uid=2的cid(但多行) 有什么想法吗?根据给定的细节,试试这个。假设您有一个名为docs的表 SELECT d1.cid FROM docs AS d

我想检查uid同时等于
1
2
的行,如果是,则返回cid。在本例中,只有2个,但如果您知道返回CID的方法超过2个,那也太好了

当我知道两个
uid
值时,如何最容易地获得cid=5的值?(1,2)。

对于伪sql,我的想法类似于
选择cid,其中uid=1或uid=2

这将返回uid为1或2的所有行。我怎样才能限制为
语句以及

选择uid=1和uid=2的cid(但多行)


有什么想法吗?

根据给定的细节,试试这个。假设您有一个名为
docs
的表

SELECT d1.cid
FROM docs AS d1
LEFT JOIN docs AS d2 ON d1.cid = d2.cid
WHERE d1.uid = 1
AND d2.uid = 2

据我所知,您正在寻找一种将条件应用于多行的方法,这种方法是通过agruption函数实现的。试试这个:

Select CID 
from YourTable where uid IN (1,2)
group by cid
having count(uid) = 2
在本例中,我使用in而不是two OR,并按CID对行进行分组,然后将结果限制为那些UID等于1和2的行。 有许多棘手的方法可以达到相同的效果,例如,您还可以执行以下操作:

Select CID 
from YourTable where uid IN (1,2)
group by cid
having sum(uid) = 3

在本例中,我对UID列求和,如果UID为1和2,则两者之和将产生3,我假设不能有3行UID为1且CID相同

您试图实现的具体目标不太清楚。我建议您扩展提供的示例数据,并包括所需结果数据的示例。我只是想找出一个select语句,如果我知道两个UID值,它可以得到cid=5的值。1和2。在上述示例中,只有
cid
=5同时具有1和2,其他
cid
是否可能同时具有1和2?否,它是唯一的
Select CID 
from YourTable where uid IN (1,2)
group by cid
having sum(uid) = 3