Mysql 从具有相似ID的表中获取记录
我有两张像这样的桌子Mysql 从具有相似ID的表中获取记录,mysql,Mysql,我有两张像这样的桌子 uid name 11 Cadman 12 Clive 13 Coleman 14 Chester 第二张桌子 id pa1 pa2 pa3 pa4 4800 11 12 11 14 4801 11 12 13 14 4802 11 12 12 4973 12 13 14 6882 12 12 13 14 6883 11 12 14
uid name
11 Cadman
12 Clive
13 Coleman
14 Chester
第二张桌子
id pa1 pa2 pa3 pa4
4800 11 12 11 14
4801 11 12 13 14
4802 11 12 12
4973 12 13 14
6882 12 12 13 14
6883 11 12 14
6884 11 13 13 14
6885 11 13 13 14
我想显示姓名而不是ID。任何人可以在此查询中帮助我吗?提前感谢Create/Populate
SELECT t1.name
FROM table1 AS t1
INNER JOIN table2 AS t2 ON t1.row1 = t2.row2
INNER JOIN table2 AS t3 ON t1.row1 = t3.row3
INNER JOIN table2 AS t4 ON t1.row1 = t4.row4
INNER JOIN table2 AS t5 ON t1.row1 = t5.row5
WHERE condn;
查询
创建/填充
查询
只有4个
内部联接
s与同一个表。显然,你需要使用不同的别名。一两个左连接不会杀死你。取决于实际数据。如果数据没有丢失任何内容,则内部将进行查询。请使用相同的表进行内部联接。显然,你需要使用不同的别名。一两个左连接不会杀死你。取决于实际数据。如果数据没有丢失任何内容,则内部将刷新。请您查询它。但是数据与一列不匹配。我们应该为该列显示空值,并显示其余匹配的列。请参阅我的问题。有时某些数据丢失。我将查看。如果存在空值,则联接不会拾取它,因为它不是外部联接。哪些价值观?我看不出你看到了什么Hi Drew Pierce谢谢你的解决方案我想到了一个主意我刚才在你的查询中使用了left join为我工作。但是数据与一列不匹配我们应该为该列显示空值,我们应该显示其余匹配列,请看我的问题有些数据有时缺失我会查看。如果存在空值,则联接不会拾取它,因为它不是外部联接。哪些价值观?我看不出你看到了什么Hi Drew Pierce谢谢你的解决方案我有个主意我刚才用left join在你的查询中为我工作了。
create table nt
( -- name table
uid int auto_increment primary key,
name varchar(100) not null
);
create table it
( -- id table (sorry my creativity is at a low)
id int primary key,
pa1 int not null,
pa2 int not null,
pa3 int not null,
pa4 int not null,
-- in the constraining kinda mood:
CONSTRAINT fk_pa1_nt FOREIGN KEY (pa1) REFERENCES nt(uid),
CONSTRAINT fk_pa2_nt FOREIGN KEY (pa2) REFERENCES nt(uid),
CONSTRAINT fk_pa3_nt FOREIGN KEY (pa3) REFERENCES nt(uid),
CONSTRAINT fk_pa4_nt FOREIGN KEY (pa4) REFERENCES nt(uid)
);
insert nt (name) values ('kurt'),('burt'),('curt'),('dirt'),('lert'),('murte'),('qbert');
insert nt (name) values ('jim'),('kim'),('dim'),('sim'),('tim'),('Cadman'),('bim');
insert it(id,pa1,pa2,pa3,pa4) values (4800,11,12,13,14);
insert it(id,pa1,pa2,pa3,pa4) values (4801,3,5,7,9);
select it.id,nt1.name,nt2.name,nt3.name,nt4.name
from it
join nt nt1
on nt1.uid=it.pa1
join nt nt2
on nt2.uid=it.pa2
join nt nt3
on nt3.uid=it.pa3
join nt nt4
on nt4.uid=it.pa4
order by it.id;
+------+------+------+--------+------+
| id | name | name | name | name |
+------+------+------+--------+------+
| 4800 | sim | tim | Cadman | bim |
| 4801 | curt | lert | qbert | kim |
+------+------+------+--------+------+
2 rows in set (0.00 sec)