2014-11-03 35 views
0

我曾與甲骨文,但我的SQL查詢NOT EXIST曾與不存在不工作在PHP/mysqli的使用不是存在於PHP的MySQL

mysqli_query($link,"SELECT * FROM users u where u.active=1 AND u.allowed=1 NOT EXIST 

(SELECT f.uid FROM featured2 f WHERE f.uid=u.id) ORDER BY RAND() "); 

其實,我想從表中的所有結果用戶除了從表featured2結果,其中f.uid = u.id

+0

我個人的偏好是避免了'NOT EXISTS(correlated_subquery)',並使用反連接模式(即左[外]連接返回來自用戶所有行從'匹配行沿特徵2「,然後是」IS NULL「謂詞來過濾掉所有匹配的行,只返回'用戶'中沒有'特徵2'中匹配行的行。)如果使用'NOT IN(子查詢) '相反,請小心子查詢不返回NULL。 – spencer7593 2014-11-04 00:30:30

回答

2

這是在MySQL NOT EXISTS,你需要前一個AND

SELECT * 
FROM users u 
WHERE u.active=1 
AND u.allowed=1 
AND NOT EXISTS(
    SELECT f.uid FROM featured2 f WHERE f.uid=u.id 
) 
ORDER BY RAND() 
+0

哦,我的錯誤,它在Oracle中不存在,但沒有注意到。謝謝你的幫助。 – user3667167 2014-11-03 22:23:35

+0

不客氣:-) – 2014-11-03 22:23:58

+0

使用'NOT IN' insted'NOT EXIST' – 2014-11-03 22:30:12