2015-06-18 7 views
0

Попытка создать запрос, который генерирует список пользователей, которые:Doulbe <> ANY запрос не работает на второй <> ANY

A.) пользователь LoggedIn не уже следующие

Б.) пользователь LoggedIn уже не рассматривается и пропущена (FOLLOWER_SWIPES таблицу)

Вот мой запрос, по какой-то причине он все еще показывает пользователям, что пользователь LoggedIn пропустил в прошлом:

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 

ответ

0

Состояние:

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 
       ) 
+0

в запросах кажется очень медленным, есть лучший способ, чтобы написать или сделать это все вместе? – ChuckKelly

+0

У вас есть индексы в столбцах, используемых для сравнений 'FOLLOWER_SWIPES (UID_FK, SWIPPED_UID_FK)'? –

 Смежные вопросы

  • Нет связанных вопросов^_^