2017-09-15 54 views
-1

我需要写这样的查询:Mysql的地方=“东西”的搜索

SELECT * FROM users WHERE user_name='somthing' ELSE WHERE user_name LIKE 'something%' ORDER BY user_name; 

但我不知道怎么写。

表如下:

id | user_name | frequency 

第一个记录是

4 | fred | 1 

因此搜索USER_NAME当=“弗雷德”如果有完全匹配,展现最频繁的纪录(最高频率值)否则,如果没有完全匹配显示结果如'fred'

我已经复制了一个示例。链接是http://www.peachpit.com/articles/article.aspx?p=1802754&seqNum=3

+2

'WHERE user_name LIKE'something%''?既然“东西”也匹配呢?无论如何,基本的SQL教程可能会有帮助。 – Ivar

+0

所以我想检查它是否等于第一,但如果不是,然后做一个像? – sam67

+1

就像我说的,[一个基本的SQL教程可能有帮助。](https://www.w3schools.com/sql/sql_and_or.asp) – Ivar

回答

1
CREATE TABLE users 
(
    id INT, 
    user_name VARCHAR(255), 
    frequency INT 
); 

INSERT INTO users 
VALUES 
(4,'fred',1), 
(5,'fred',2), 
(6,'frederick',1), 
(7,'freddie',1), 
(8,'freddie',2), 
(9,'john',1); 

(
    SELECT * 
    FROM users 
    WHERE user_name = 'fred' 
    ORDER BY Frequency DESC 
    LIMIT 1 
) 

UNION 

(
    SELECT * 
    FROM users 
    WHERE user_name LIKE '%fred%' AND 
      NOT EXISTS (
          SELECT * 
          FROM users 
          WHERE user_name = 'fred' 
          ORDER BY Frequency 
          LIMIT 1 
         ) 
) 
+0

我试过,但它发现两者,我只想要1或其他。 – sam67

+0

请更新您的问题,以包含您的数据 – SEarle1986

+0

这是一个OR条款的性质,它找到1或其他......你需要一个AND吗? – SEarle1986

相关问题