0

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

| 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”的所有行 + 内容包含单词“elgrand”的所有行,结果将按日期排序为 DESCENDING ?

我已经尝试过了,但查询似乎有问题,并且没有真正按日期排序,有时结果是双倍的。

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

3 回答 3

1

你需要一个AND——

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

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

于 2013-09-01T17:55:28.567 回答
0

AND改用OR

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

结果永远不会翻倍,直到 2 条记录具有相同的数据

于 2013-09-01T17:57:28.677 回答
0

您只需要使用 AND 而不是 OR。所以您的查询将是:

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

加一件事供您参考,不要使用保留字作为数据库字段名称,例如日期、订单等。这可能会产生一种歧义。

于 2013-09-01T18:36:04.527 回答