我有一个MySQL表,我想提取所有行,除非列包含特定值。这可能吗?
我的表结构
+----+------+------+------+
| ID | col1 | col2 | col3 |
+----+------+------+------+
| 1 | blah | blah | boo |
+----+------+------+------+
| 2 | blah | blah | blah |
+----+------+------+------+
| 3 | blah | blah | boo |
+----+------+------+------+
因此,如果col3包含boo,请不要提取:
+----+------+------+------+
| ID | col1 | col2 | col3 |
+----+------+------+------+
| 2 | blah | blah | blah |
+----+------+------+------+
答案 0 :(得分:3)
这当然是可能的。以下代码应该可以解决问题
SELECT * FROM `table` WHERE `column` != "boo"
如果您要查看多个列的位置,请添加以下后续字词:
&& `column` != "boo"
为您需要的每一列。
当然,假设你的意思是你不想要嘘声。如果你只想要嘘声,那就拿走感叹号。
答案 1 :(得分:1)
如果用“包含”表示“等于”:
SELECT * FROM table WHERE column <> 'VALUE TO EXCLUDE'
或者,如果“包含”,则字面意思是“包含”:
SELECT * FROM table WHERE column NOT LIKE '%VALUE TO EXCLUDE%'
编辑 - 要回答您更新的问题:
SELECT * FROM table WHERE col3 <> 'boo'
答案 2 :(得分:1)
SELECT * FROM YourTable WHERE col3 != 'boo';
答案 3 :(得分:0)
如果col3等于'boo',则以下排除col3。
select * from mytable where col3 <> 'boo'
除此之外,我不知道你在寻找什么。
答案 4 :(得分:0)
从MyTable中选择*,其中col3&lt;&gt; 'BOO'
答案 5 :(得分:0)
如果列数据和要求不简单,可以在where子句中使用正则表达式。 e。
SELECT * FROM foo WHERE bar REGEXP '[[:alnum:]]+';
或
SELECT * FROM foo WHERE bar NOT REGEXP '[[:alnum:]]+';