【问题标题】:Doulbe <> ANY query not working on second <>ANY双 <> ANY 查询在第二个 <> ANY 上不起作用
【发布时间】:2015-06-18 02:24:26
【问题描述】:

尝试创建一个生成用户列表的查询:

A.) 登录用户尚未关注

B. ) 登录用户尚未查看和跳过(FOLLOWER_SWIPES 表)

这是我的查询,由于某种原因,它仍然向用户显示登录用户过去已跳过:

SELECT u.uid, u.full_name, u.bio, u.thumb_img, u.college, u.HEADER_IMG
FROM users AS u
WHERE u.uid <>'$uid'
AND u.uid <> ANY(

SELECT FOLLOWING_UID_FK
FROM FOLLOWERS
WHERE UID_FK='$uid'
)
AND u.uid <> ANY(
SELECT SWIPPED_UID_FK
FROM FOLLOWER_SWIPES
WHERE UID_FK =$uid
)
AND u.college_id='$college'
ORDER BY u.last_feed_load DESC
LIMIT 0 , 30

【问题讨论】:

    标签: mysql sql select any


    【解决方案1】:

    条件:

    AND u.uid <> ANY(
    SELECT SWIPPED_UID_FK
    FROM FOLLOWER_SWIPES
    WHERE UID_FK =$uid
    )
    

    不是一个非常严格的条件。尝试使用ALL 而不是ANY

    AND u.uid <> ALL (SELECT SWIPPED_UID_FK
                      FROM FOLLOWER_SWIPES
                      WHERE UID_FK = $uid
                     )
    

    或使用等价物:

    AND u.uid NOT IN (SELECT SWIPPED_UID_FK
                      FROM FOLLOWER_SWIPES
                      WHERE UID_FK = $uid
                     )
    

    【讨论】:

    • 在查询中似乎很慢,有没有更好的方法来编写或完成这一切?
    • 您在用于比较的列上是否有索引FOLLOWER_SWIPES(UID_FK, SWIPPED_UID_FK)
    猜你喜欢
    • 2013-03-06
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-04
    • 2016-09-16
    • 2023-04-03
    相关资源
    最近更新 更多