具有这种两个用户:显示于一个简单的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
具有这种两个用户:显示于一个简单的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
我想你想要的是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
两次。
据我所知,创建另一个表中插入所有要提取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
的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;
号您想要实现什么? –
IS标识是唯一的或主键 – iamsankalp89