2017-09-15 82 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

相關問題