Php 使用多个条件筛选MySQL查询

Php 使用多个条件筛选MySQL查询,php,mysql,arrays,conditional-statements,notin,Php,Mysql,Arrays,Conditional Statements,Notin,我的输出数组名为“提要项”(fi): 我生成一个名为“RemovedFeedItems”(rfi)的数组,该数组具有以下结构: ( [0] => Array ( [object_id] => fd7ec4107d16b07c1a13cbdd386af8d2cb05ffca [postee_id] => de5fd44db1760b006b1909cf1db11a78b38e455c

我的输出数组名为“提要项”(fi):

我生成一个名为“RemovedFeedItems”(rfi)的数组,该数组具有以下结构:

(
    [0] => Array
        (
            [object_id] => fd7ec4107d16b07c1a13cbdd386af8d2cb05ffca
            [postee_id] => de5fd44db1760b006b1909cf1db11a78b38e455c
            [type] => new_join_ambition
        )

)
我的任务是获取具有以下条件的记录:

ri.id == rfi.object_id && ri.user_id == rfi.postee_id && ri.type == rfi.type
我用于获取提要项数组的查询是:

SELECT 
                i.registered AS reg, 
                a.id, 
                u.id AS user_id, 
                ui.image_id AS img,  
                'new_join_ambition' AS type, 
            FROM x_ambition_invites i 
                LEFT JOIN x_user u
                    ON i.to = u.id
                LEFT JOIN x_user_images ui 
                    ON u.id = ui.user_id
                LEFT JOIN x_ambitions a
                    ON i.ambition_id = a.id
            WHERE a.registered 
                BETWEEN '2014-07-21 14:25:03' AND '2015-08-05 12:04:41' 
            AND i.to != '8fa7a1679560876eaf2f8060abd916b692c719dc' 
            AND i.to IN ('de5fd44db1760b006b1909cf1db11a78b38e455c')
如何调整查询以实现从FeedItems数组中删除所述记录的条件

提前感谢。

尝试使用内联表:


缺点是您必须构建一个大的查询字符串:-(

您是否尝试过在where子句的末尾添加AND NOT(id==object\u id和user\u id==postee\u id和type==type)-明显地限定字段名(a.id等)@PaulF,但需要说明的是后一种情况可能在一个大数组中。因此,我应该如何做以下工作:
(a.id==a[n]['object\u id']和a.user\u id=$a[n]['postee\u id']和a.type=$a[n]['type'])
通过removedFeedItems数组的所有索引进行澄清-虽然它不像我建议的那么简单。你知道这是唯一可用的解决方案吗?:)嗯…不确定,但考虑到MySQL既不支持数组也不支持用户定义的数据类型,我想不出其他任何东西。对于corse,您可以创建并填充一个临时表,但必须注意防止并发访问。内联表是100%线程安全的。谢谢。我想我已经使用了它。:)希望我的用户不会删除很多项目!:P
SELECT 
                i.registered AS reg, 
                a.id, 
                u.id AS user_id, 
                ui.image_id AS img,  
                'new_join_ambition' AS type, 
            FROM x_ambition_invites i 
                LEFT JOIN x_user u
                    ON i.to = u.id
                LEFT JOIN x_user_images ui 
                    ON u.id = ui.user_id
                LEFT JOIN x_ambitions a
                    ON i.ambition_id = a.id
            WHERE a.registered 
                BETWEEN '2014-07-21 14:25:03' AND '2015-08-05 12:04:41' 
            AND i.to != '8fa7a1679560876eaf2f8060abd916b692c719dc' 
            AND i.to IN ('de5fd44db1760b006b1909cf1db11a78b38e455c')
SELECT ... FROM  ... WHERE (a,b,c) NOT IN (SELECT a1, b1, c1 UNION SELECT a2, b2, c2 UNION SELECT...)