有这两个用户:
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)
我认为你想要的是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
两次。
答案 1 :(得分: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
答案 2 :(得分: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;