2013-07-24 193 views
0

我想從表中選擇數據行,其中user_id不等於登錄的用戶的uder_id,並且user_id不在子查詢中。出於某種原因,我無法讓它工作。我能做什麼錯?使用MySQL查詢與子查詢

我的代碼:

SELECT * 
FROM table_name 
WHERE user_id != '".$_SESSION['id']."' 
    AND user_id NOT IN(
     SELECT * FROM another_table_name where user1= '".$user_id."' AND status= 1) 
ORDER BY RAND() 
LIMIT 5 
+1

我想你不希望'NOT EXISTS'超過'NOT IN' – Kermit

回答

0

你必須只user_idanother_table_name選擇。 沒有看到你的表格結構,我無法進一步幫助你。

0

你的邏輯是正確的。我們不知道的是查詢中的參數化值。我的猜測是那些不等於你所期望的值。

0

在你只是想選擇user_ids你的子查詢,您可以選擇使用「SELECT *」

SELECT * FROM table_name WHERE user_id != '".{$_SESSION['id']}."' AND user_id NOT IN(SELECT  
user_id FROM another_table_name where user1= '".$user_id."' AND status= 1) ORDER BY RAND()  LIMIT 5 
0

你只需要從子查詢選擇user_id是你的子查詢。可能是這樣的:

SELECT * 
    FROM table_name 
    WHERE user_id != '".{$_SESSION['id']}."' 
    AND user_id NOT IN(SELECT user_id 
     FROM another_table_name 
     WHERE user1= '".$user_id."' 
     AND status= 1) 
    ORDER BY RAND() 
    LIMIT 5