說,如果表陷阱具有列 'ID' 和行內容mysql查詢。需要幫助
7
8
9
10
11
12
13
14
SELECT id FROM trap
WHERE id<10 and id>12
這並沒有給任何輸出
但如果
SELECT id FROM trap
WHERE id>7 and id<14
給我所需的輸出,即
8
9
10
11
12
13
說,如果表陷阱具有列 'ID' 和行內容mysql查詢。需要幫助
7
8
9
10
11
12
13
14
SELECT id FROM trap
WHERE id<10 and id>12
這並沒有給任何輸出
但如果
SELECT id FROM trap
WHERE id>7 and id<14
給我所需的輸出,即
8
9
10
11
12
13
問題是,您正在使用AND運算符,您應該使用OR。
SELECT id FROM trap WHERE id<10 OR id>12
顯然id
不能在同一時間兩個10和12,一個箱只能容納一個值。
或者你可以寫的聲明爲:
SELECT id FROM trap WHERE NOT(id BETWEEN 10 AND 12)
之所以SELECT id FROM trap WHERE id>7 and id<14
做工作是,它是可能的值在同一時間是BETWEEN
8和13(含) 。
然而,沒有辦法可以將值同時小於10和大於12。
所以如果條件是相互排斥的,你必須使用OR
,如果條件不排除一個和其他,那麼你必須使用AND
。
您可以在NOT()
中包裝測試以反轉測試,這是因爲AND
和OR
是完全相反的。
@John:謝謝。現在可以運行 – Coder17 2012-03-16 11:45:48
我認爲你錯了,或者你錯誤地表述了這個問題。
id < 10和id> 12不可能同時爲真。這就是爲什麼你沒有得到任何結果爲您的第一個查詢。
什麼你要找的是:
SELECT id FROM trap WHERE id<10 OR id>12
您忘記了更正查詢... – Johan 2012-03-16 11:51:03
沒有整數比12大且小於10 – Antoine 2012-03-16 11:43:40
而且應該還是在第一個查詢,因爲我猜你正在尋找的是範圍小於10或大於12 – pharalia 2012-03-16 11:43:57
這將有助於您確定您正在嘗試做什麼。如果您想確定哪些行在兩個數字之間有值,那麼您的第二個表單是正確的,正如您發現的那樣。如果你想得到小於一個數字的任何數字,並且你想得到比另一個數字更多的數字,你必須將這兩個事物與一個或不是一個和。但是哪一個是正確的取決於你的目標。 – 2012-03-16 11:54:53