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

时间:2013-09-01 17:53:41

标签: php mysql

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

| 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

3 个答案:

答案 0 :(得分:1)

您需要AND -

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

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

答案 1 :(得分:0)

请使用AND代替OR

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

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

答案 2 :(得分:0)

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

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

另外还有一件事情是您的信息,而不是使用保留字作为数据库字段名称,例如日期,订单等。这可能会产生一种歧义。