如何使用OR子句选择两个条件


How to SELECT with two condition using OR clause

我有一个具有以下结构和数据的数据库表:

| username | content                  | date               |
  elgrand    hello                      2013-08-08 17:04:07
  alphard    hey,how are you elgrand?   2013-08-08 17:50:22
  elyson     I don't have any idea      2013-08-08 18:14:31

是否可以选择用户名为"elgrand"的行中的ALL+内容包含单词"elgrant"的行的ALL结果将按日期排序为DESCENDING??

我试过了,但查询似乎有问题,而且不是按日期排序的,有时结果是双倍的。

SELECT * FROM ms_writing 
         WHERE username='elgrand' OR content LIKE '%elgrand%' 
         ORDER BY date DESC

您需要一个AND-

SELECT
    * 
FROM
    ms_writing 
WHERE 
    username = 'elgrand' AND 
    content LIKE '%elgrand%' 
ORDER BY 
    date DESC

此查询将返回用户名为elgrand、内容为字符串elgrand的所有行。

请使用AND而不是OR

SELECT * FROM ms_writing WHERE username='elgrand' AND content LIKE '%elgrand%' ORDER BY date DESC

在两条记录具有相同数据之前,结果永远不会翻倍。

您只需要使用AND而不是OR。因此,您的查询将是:

SELECT * FROM ms_writing 
         WHERE username='elgrand' AND content LIKE '%elgrand%' 
         ORDER BY date DESC

另外,还有一件事要告诉你,不要使用保留字作为数据库字段名称,例如日期、顺序等。这可能会造成歧义。