2017-09-13 25 views
0

具有這種兩個用戶:顯示於一個簡單的MySQL查詢重複值

ID = 143
用戶=用戶1
----
ID = 91
用戶=用戶2

這個簡單的查詢:

SELECT name FROM users where id IN (143,143,91);

它有兩個結果:

User 1 
User 2 

是否有任何方法可以返回重複的值呢?我所需的輸出是:

User 1 
User 1 
User 2 
+0

號您想要實現什麼? –

+0

IS標識是唯一的或主鍵 – iamsankalp89

回答

0

我想你想要的是UNION ALL

SELECT name FROM users where id = 143 
UNION ALL 
SELECT name FROM users where id = 143 
UNION ALL 
SELECT name FROM users where id = 91 

一個簡單的查詢將不會返回相同的143兩次。

0

據我所知,創建另一個表中插入所有要提取ID:

CREATE TABLE TUSERS (ID INT, NAME VARCHAR(20)); 
INSERT INTO TUSERS VALUES (91, 'User2'); 
INSERT INTO TUSERS VALUES (143, 'User1'); 

CREATE TABLE TMP01 (ID INT); 
INSERT INTO TMP01 VALUES(143); 
INSERT INTO TMP01 VALUES(143); 
INSERT INTO TMP01 VALUES(91); 

SELECT A.* 
FROM TUSERS A 
RIGHT JOIN TMP01 B ON A.ID=B.ID; 

輸出:

ID NAME 
143 User1 
143 User1 
91 User2 
0

IN列表僅僅是用於過濾現有行。如果你想要所有的值,那麼建議使用外連接。您可以即時生產IN列表:

select u.name 
from (select 143 as id union all 
     select 143 union all 
     select 91 
    ) ids left join 
    users u 
    on u.id = i.id;