[英]mysql - select a column based on a combination of values from another column
您好,我需要得到plistid
根据给定的组合avid
。 例如,我提交了1和4 avid
的组合,它应该返回plistid
。另一个示例是,当我提交了2和5 avid
的组合时,它应该返回plistid
。如果我提交了1和3,它应该返回plistid
。由于它们具有相同的attributeid
因此不返回任何内容。
我如何在mysql中生成它,这是我的表
注意:avid可以是1,2,3或4个数字的组合,具体取决于avid提交的数量。
首先,找到所有的比赛avid
的plistid
然后检查他们有不同的attributeid
。 您可以使用聚合来完成此操作,这是“集内查询”的一种变体:
select plistid
from t
group by plistid
having sum(avid = 1) > 0 and
sum(avid = 4) > 0 and
count(distinct case when avid in (1, 4) then attributeid end) = 2
中前两个条件having
条款在说什么avid
你想秒。 他们正在计算avid
出现在其中一个值上的次数,每个值仅在找到至少一个值时才返回true。 最后是说您需要在行上使用不同的属性ID。
尝试:
select plistid
from t
where avid in (1,4)
group by plistid
having count(distinct avid) =2
那这个呢?
SELECT t1.plistid
FROM t t1
JOIN t t2
ON t1.attributeid != t2.attributteid
AND t1.plistid = t2.plistid
WHERE
t1.avid = 1
AND t2.avid = 4
试试这个:
select a.plistid
from your_table a, your_table b
where a.plistid = b.plistid
and a.avid = <first param>
and b.avid = <second param>
and a.attributeid <> b.attributeid;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.