2011-12-06 92 views
0

我只是試圖查詢一個表返回一個布爾值,這似乎只有返回null。爲什麼這個mysql查詢只返回null?

$sTable4由列userid & artistid

$artistid的是在給腳本(其絕對正確傳遞)傳遞的參數

$userid是在當前登錄用戶的ID。

用戶可以將藝術家保存到favourites列表中。

我想要的是爲當前登錄的用戶和上述變量中​​聲明的特定artistid檢查此表以查看是否存在條目。如果沒有,那麼我希望它返回null,如果它返回'1'。

任何想法我錯了嗎?

SELECT userid, artistid 
FROM $sTable4 AS b 
WHERE NOT EXISTS 
(
    SELECT artistid 
    FROM $sTable4 AS ab 
    WHERE b.userid = $userid 
     AND b.artistid = $artistid 
) 

回答

1

沒有走錯了,其實你想選擇$sTable4userid, artistid是那些沒有在同一個表中存在,所以你能指望什麼,你會如何選擇他們,如果他們不存在?!我認爲你在查詢中缺少一些東西,因爲這個檢查總是返回null,因爲它們是存在的,所以它不會選擇它們。所以我認爲where exists會爲你這樣工作:

SELECT ab.artistid 
FROM $sTable4 AS ab 
WHERE exists 
(
    select artistid 
    from $sTable4 b 
    where b.userid=$userid AND b.artistid=$artistid 
) 
+0

哦,親愛的。似乎我所要做的只是刪除'NOT'並使用EXISTS functin。它現在完美地工作。看來我只是簡單地把這兩個功能混淆起來......多麼尷尬!無論如何謝謝你MGA。 :) – gordyr