MySQL通过两列找到多个记录

时间:2016-06-28 20:51:36

标签: php mysql multiple-columns propel

我们说我有一个如下数组(ID => Type):

$contentIndexes = [
    32 => 'news', 
    40 => 'blog', 
    68 => 'blog', 
    109 => 'document', 
    124 => 'news'
]

以下数据库表:

CREATE TABLE `ContentIndex` (
    `ID` INT(11) NOT NULL AUTO_INCREMENT,
    `ItemID` INT(11) NOT NULL,
    `ItemType` VARCHAR(50) NOT NULL COLLATE 'utf8_unicode_ci',
    //...
);

如何根据' ItemID'的组合检索每个ContentIndex?和' ItemType'列(最好只有一个查询)。

使用WHERE IN不是一种选择,因为它不会考虑这种组合:

ContentIndexQuery::create()
    ->filterByItemID(array_keys($contentIndexes))
    ->filterByItemType($contentIndexes)
    ->find();

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不知道Propel语法,但基本的SQL语法是OR

WHERE ((ItemID = 32 AND ItemType = 'news')
        OR
       (ItemID = 40 AND ItemType = 'blog')
        OR
       (ItemID = 68 AND ItemType = 'blog')
        OR
       (ItemID = 109 AND ItemType = 'document')
        OR
       (ItemID = 124 AND ItemType = 'news')
      )

答案 1 :(得分:0)

对于将来遇到此问题的任何Propel用户,这就是我在Barmar所说的创建查询时提出的:

    $scope.search_posts = function() {
        if ( !angular.isUndefined($scope.searchText) && $scope.searchText.length > 2 ) {
            $scope.searchText      = '';
            $scope.show_search_box = false;
            $ionicTabsDelegate.select($ionicTabsDelegate.selectedIndex() + 1);
        } else {
            $ionicLoading.show({ template: 'You must write at least 3 characters long.', noBackdrop: false, duration: 2000 });
        }
    }