我有一個2表,其中我有組,另一個我設置用戶限制哪些組被看到。 當我做LEFT JOIN並指定沒有條件時,它會顯示我所有的記錄。當我做WHERE group_hide.hide!='true'時,它只顯示這些記錄具有設置給它們的錯誤枚舉類型。使用JOIN,其他組將隱藏字段設置爲「NULL」。 我該如何做到這一點,以便它只排除設置爲true的這些設置,並顯示其他任何有NULL或false的內容?mysql:'WHERE something!= true'排除NULL的字段
1
A
回答
6
在MySQL中,當處理可爲空的值時,您必須使用IS NULL
或IS NOT NULL
。
這裏你應該用(group_hide.hide IS NULL OR group_hide.hide != 'true')
+2
請參見手冊中的[使用NULL值](http://dev.mysql.com/doc/refman/5.5/en/working-with-null.html)。 – 2011-03-15 09:31:12
0
一個明顯的答案是:
WHERE (group_hide.hide is null or group_hide.hide ='false')
我不知道把我的頭頂部有什麼空的行爲規則。
1
Don已經爲您提出的問題提供了很好的答案,並將解決您的直接問題。
但是,讓我解決錯誤的數據類型域的點。通常你會讓hide
成爲BOOLEAN,但是mysql並沒有完全實現它。它將它轉換爲TINYINT(1),允許從-128到127的值(請參閱mysql的data types概述)。由於mysql不支持CHECK約束,因此您可以選擇使用觸發器或外部引用來正確執行域。
以下是與錯誤的數據域(你的情況)的問題,按重要性排序:
- 允許一個字段NULL,可以是缺點只有1或0,你必須僱用3 value logic (true,false,null),這在btw中沒有完美實現。這使得某些查詢更復雜和較慢然後他們需要。如果你可以創建一個列NOT NULL,那麼。
- 對於只能有1或0的字段使用VARCHAR的缺點是查詢的速度,這是由於額外的I/O和更大的存儲需求(減慢讀取,寫入操作,使字段更大索引的一部分並影響備份的大小;請記住,無這些效果可能會引起錯誤域單一字段爲較小尺寸表,但如果數據類型一致地設置太大或者如果表格有嚴重數量的記錄,效果將會咬人)。此外,您將始終需要將VARCHAR轉換爲1或0以使用自然的mysql布爾運算符,從而增加查詢的複雜性。
- 對於BOOL,使用TINYINT(1)的缺點是RDBMS允許某些值不允許使用,理論上允許將無意義的值存儲在系統中。在這種情況下,您的應用程序層必須保證數據的完整性,如果RDBMS保證完整性,它會保護您免受應用程序層中的某些錯誤以及數據庫管理員可能犯的錯誤。
相關問題
- 1. if(something)vs if(something === true)
- 2. Django South - 將null = True字段變成null = False字段
- 3. django不能爲null模型字段包含null的空錯True-
- 4. RTRIM(something)+''+ RTRIM(something)會導致NULL
- 5. Hessian排除字段
- 6. jsonPath排除字段
- 7. AutoMapper排除字段
- 8. 排除某些字段的NULL或EMPTY值
- 9. 在request.getParameter(「something」)中獲取null
- 10. 如何消除TSQL中的NULL字段
- 11. null = True的ForeignKey字段給出'NoneType'對象沒有屬性ID
- 12. 字段null = True不接受Django中的空值
- 13. 如何從params [:something]中刪除一個字段
- 14. Django-Dilla排除字段
- 15. Monotouch.Dialog:支持字段排除
- 16. DJANGO:Inlineformset指定字段/排除
- 17. 字段並排除在tastypie
- 18. JAXB綁定排除字段
- 19. 排除字段Jersey2響應
- 20. 從CSV中排除字段
- 21. 片段setuserVisibleHint true,但getActivity返回null
- 22. FALSE和TRUE VS NULL和TRUE
- 23. django ForeignKey null = true
- 24. Null字段
- 25. CONCAT'ing NULL字段
- 26. 表單字段(unique = true)和(nullable = true)
- 27. 排除orika映射器的字段
- 28. JmsSerializer排除SonataUser的密碼字段
- 29. Django的modelformset排除ID字段
- 30. SOLR排除FL中的字段
是的,是的,它的確如此。 – Ben 2011-03-15 09:30:36