SQL查询,我错过了什么?

时间:2014-03-09 10:57:17

标签: sql

在SQL中,给定this dataset

当我尝试此查询时

SELECT * FROM table1 WHERE NAME= 'Bob'

它提供了结果,但是当我尝试这个时,它不起作用但它也没有给出任何错误

SELECT * FROM table1 WHERE NAME= 'Bob' AND NAME= 'John';

有人可以告诉我我做错了吗?

由于

编辑:

鉴于以前的数据集

查找数据集消息中出现的任何两个单词 在超过4条消息中单独出现的表但是 从来没有在同一个消息中?

4 个答案:

答案 0 :(得分:3)

您应该使用OR代替AND

SELECT * FROM table1 WHERE NAME= 'Bob' OR NAME= 'John';

NAME不能同时为BobJohn,但BobJohn

答案 1 :(得分:3)

第二个查询返回Name="Bob"Name="John"始终为空的记录。 你可以尝试这样:

SELECT * FROM table1 WHERE NAME= 'Bob' OR NAME= 'John';

它将返回名称为Bob OR John。

的记录

结果将是:

DATA                NAME    MESSAGE                         TIMEZONE
01/03/2014 10:27    Bob     What time do you want to meet?  London
18/02/2014 02:43    John    What time is it in London?      New york
14/02/2014 00:50    Bob     Meeting today?                  London

请参阅SQL Fiddle

中的结果

详细了解Logical Operators

修改

对于第二个问题,请使用此查询:

SELECT name,message 
FROM table1
WHERE ROUND ((CHAR_LENGTH(message)
            - CHAR_LENGTH( REPLACE ( message, "out", "") ) 
            )/CHAR_LENGTH("out")) =1

选择message仅包含"out"一次的记录。

请参阅SQL Fiddle

中的示例

查看查询的工作原理here

答案 2 :(得分:2)

除了使用OR之外,另一种方法就是使用IN

SELECT * FROM table1 WHERE NAME IN ('Bob', 'John');

答案 3 :(得分:2)

有一件事在逻辑上是不正确的。 您正在使用

SELECT * FROM table1 WHERE NAME= 'Bob' AND NAME= 'John';

但是,名称字段不能同时是'Bob'和'John'。 它可能是'Bob'OR'John'

可能你想做这件事。如果我没错?

SELECT * FROM table1 WHERE NAME= 'Bob' OR NAME= 'John';

否则,请使用此内容

SELECT * FROM table1 WHERE NAME IN ('Bob', 'John');