yii 匹配IN子句中的所有值

zfciruhq  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(144)

是否有办法确保IN子句中的所有值都匹配?
示例:
我可以将IN用作:IN (5,6,7,8) .
我需要它像AND一样跨多行工作。

**UPDATE:**我需要这个来列出数据库中符合指定参数的公司。公司和分类法是多对多的关系。我使用Yii框架。这是我的控制器的代码:

public function actionFilters($list)
{
    $companies = new CActiveDataProvider('Company', array(
        'criteria' => array(
            'condition'=> 'type=0',
            'together' => true,
            'order'=> 'rating DESC',
            'with'=>array(
            'taxonomy'=>array(
                'condition'=>'term_id IN ('.$list.')',
                )
            ),
        ),
    ));
    $this->render('index', array(
        'companies'=>$companies,
    ));
}
mw3dktmi

mw3dktmi1#

您可以执行以下操作:

select ItemID
from ItemCategory
where CategoryID in (5,6,7,8) <-- de-dupe these before building IN clause
group by ItemID
having count(distinct CategoryID) = 4 <--this is the count of unique items in IN clause above

如果您提供您的模式和一些示例数据,我可以提供一个更相关的答案。
SQL Fiddle示例

yi0zb3m4

yi0zb3m42#

SELECT ItemID
     FROM ItemCategory
        WHERE (
               (CategoryID = 5) OR 
               (CategoryID = 6) OR 
               (CategoryID = 7) OR 
               (CategoryID = 8)
              )
     GROUP BY ItemID
 HAVING COUNT(DISTINCT CategoryID) = 4

相关问题