我想選擇表格中單元格的值不是foo
的所有內容。我認爲它會與WHERE NOT NULL
類似,類似SELECT * FROM database.table WHERE NOT 'foo';
,但它只返回沒有數據的列標題。mysql(5.1)> select * from database.table其中不是foo(在所有字段中)
編輯:我想這樣做沒有指定特定的列(NOT 'foo'
所有字段)。
我想選擇表格中單元格的值不是foo
的所有內容。我認爲它會與WHERE NOT NULL
類似,類似SELECT * FROM database.table WHERE NOT 'foo';
,但它只返回沒有數據的列標題。mysql(5.1)> select * from database.table其中不是foo(在所有字段中)
編輯:我想這樣做沒有指定特定的列(NOT 'foo'
所有字段)。
有沒有辦法做到這一點不指定字段和條件,在
select * from table where
col1 != value and
col2 != value and
...
根據你所說的
意味着單元格的值是不是foo
您可能需要更改and
(一行中的列都不符合條件)至or
(至少一列不匹配e條件)。
嗨,吉姆,謝謝,但這樣做最終會變得非常麻煩而且效率極低。 'AND'會是合適的操作符,因爲我想避免任何'foo'的實例)。 – jacob
作爲@Jim Garrison的回答,您必須指定列來比較'foo'值。否則,你自己正在測試一個常量值,可以是false(零)或true(非零)。
SELECT * FROM database.table WHERE NOT 'foo'
返回無數據,因爲'foo'
是一個非錯誤常數值。因此NOT 'foo'
對於表中的每一行都是false,所以沒有行匹配,結果是一個空集。
Jim給出了一種依次測試每列的語法。這是另一種替代語法:
SELECT * FROM database.table WHERE 'foo' NOT IN (column1, column2, column3, ...)
但是,我同意來自@Mosty Mostacho的評論。在關係數據庫中,測試多個列的單個值是很奇怪的。每列應該是不同的邏輯類型的屬性,所以在許多列中尋找相似的值是不常見的(不是不可能的,但不常見)。
這通常意味着您正在使用重複組列,這違反了First Normal Form。相反,您可能需要創建一個子表,以便您搜索的所有值都位於單個列中,並位於多行中。
嗨比爾,表格存儲來自我不能控制的調查的數據。在調查中,有許多「跳過」,其中問題是不可見的,因此Db中的字段將是空白的,但是當提交調查時,不可見問題的值被設置爲「foo」。這讓我知道這個字段的數據應該被忽略。所以我想獲得所有不是'foo'的數據。 – jacob
順便說一句,'foo'會被記錄爲'NULL',只不過我需要區分有意空白的數據和恰好空白的數據:假設用戶在到達結束之前停止調查。最初的'INSERT'會導致第1頁上的字段被設置爲NULL。通過調查頁面進行的後續用戶更新會將NULL更改爲實際的數據。但有時候一個問題是不適用的(基於前面的問題的回答),所以這個問題是隱藏的。我不想弄清事後是哪種情況,所以隱藏的問題記錄爲'foo' – jacob
看起來MySQL似乎不夠成熟。相反,我將不得不在我的php循環中添加一個if-test來檢查foo
,如果foo
存在,則打破。我不想這樣做,因爲我必須在測試單元格的值之前進入幾個嵌套循環...
你得到的兩個答案中哪一個不夠複雜? –
您可能想看看動態SQL。 –
這是一個奇怪的問題。你確定你確實需要這樣做嗎? –
很確定。我有點驚訝這不是一個更普遍的事情...... – jacob