簡體   English   中英

MySQL不等於不工作

[英]MySQL not equals to isn't working

這是我的代碼:

$query = mysql_query("SELECT P_Id, Thing,Something Date
    FROM priv
    WHERE Something = '$thing' AND thing2 <> 'This'
    LIMIT 1"
) or die(mysql_error());

代碼在沒有"thing2 <> 'this'"語句的情況下正常工作,但是當我實現"thing2 <> 'this'" ,它返回 0 結果。 好像表中沒有空行,但表的 thing2 行中有空( NULL )行。

問題是,這個“不等於”語句不起作用,我已經嘗試了所有方法,但它不會返回任何值。

編輯(解釋詞):列看起來像這樣 - P_Id | 東西| 日期 | 事情 1 | Thing 2 和我需要從某行接收 P_Id,其中Something = Something AND Thing1 NOT EQLAS 為“this”(上例),Thing2 也不等於“this”。我知道這聽起來很瘋狂。對不起

好的,所以我嘗試了一些實驗,結果表明“thing2 <>”thingy 不適用於things1/thing2 列,但其他列如“Something”表中的“this”條目也可以正常工作(找到最靠近的行沒有“這個”條目的地方)。但是為什么這不適用於things1 和2?我嘗試重命名things 列,但沒有結果。

something <> NULL將評估為NULL 如果在查詢中使用,則與0 (或false )幾乎相同。

請記住,SQL 使用三值邏輯而不是簡單的二進制邏輯。

您可能需要使用IS NULL顯式檢查IS NULL

... OR THING IS NULL

或者,您可以使用帶有否定的NULL 安全等於運算符<=> (這是 MySQL 特定的,但是, 它不是標准 SQL ):

... AND NOT (THING <=> 'This')

我接受@JoachimSauer 的方式。 另外,我也更喜歡嘗試以下一種。

... WHERE Something = '$thing' AND NOT (IFNULL(thing2,'') = 'This')
LIMIT 1```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM