SQL加两个表的方法select
SQL plus two tables select method
这就是我在 SQL plus 中所做的。到目前为止,我对此还很陌生:
CREATE TABLE u
();
CREATE TABLE a
();
基本上,一个用户可以将一个或多个头像 link 发送到其电子邮件地址,但我想知道如何 link 第二个 table 的头像并分配它发送到第一个 table 的电子邮件地址,如果我使用 SELECT 函数,我可以列出所有电子邮件地址为 'EMAIL1@GRE.AC.UK'.[=13 的头像=]
select *
from avatars
where id in ( select id from users where email = 'EMAIL1@GRE.AC.UK');
或
SELECT avatars.*
FROM avatars
INNER JOIN users
ON avatars.id = users.id
and users.email = 'EMAIL1@GRE.AC.UK'
如果两个表的 ID 字段看起来应该包含同一用户的相同值,那么您已经建立了 1-1 关系。每个用户只能拥有一个头像。如果你想要一个以上的头像,那么它必须有一个独立的ID和另一个UserID来引用用户。
create table Avatar(
ID NUMBER CONSTRAINT pk_email PRIMARY KEY,
UserID number,
name VARCHAR2(32),
dateOfBirth DATE,
strength NUMBER(9),
gender VARCHAR2(7),
hoard INTEGER,
constraint FK_Avatar_User foreign key( UserID )
references User( ID )
);
create index IX_Avatar_User on Avatar( UserID, ID );
现在每个头像都有自己的ID值。每个头像只能分配给一个用户,但可以为多个头像输入相同的用户ID。索引加速访问。
然后显示分配给用户的头像:
select U.ID UserID, U.email, A.ID AvatarID, A.Name AvatarName
from Users U
join Avatar A
on A.UserID = U.ID
where U.ID = 123; -- If you are only interested in one particular user.
顺便说一句,除非你在医院的托儿所工作,否则你会发现 DateOfBirth 很少有默认定义。如果在创建记录时不知道该详细信息,则 NULL
优于 TODAY
。
这就是我在 SQL plus 中所做的。到目前为止,我对此还很陌生:
CREATE TABLE u
();
CREATE TABLE a
();
基本上,一个用户可以将一个或多个头像 link 发送到其电子邮件地址,但我想知道如何 link 第二个 table 的头像并分配它发送到第一个 table 的电子邮件地址,如果我使用 SELECT 函数,我可以列出所有电子邮件地址为 'EMAIL1@GRE.AC.UK'.[=13 的头像=]
select *
from avatars
where id in ( select id from users where email = 'EMAIL1@GRE.AC.UK');
或
SELECT avatars.*
FROM avatars
INNER JOIN users
ON avatars.id = users.id
and users.email = 'EMAIL1@GRE.AC.UK'
如果两个表的 ID 字段看起来应该包含同一用户的相同值,那么您已经建立了 1-1 关系。每个用户只能拥有一个头像。如果你想要一个以上的头像,那么它必须有一个独立的ID和另一个UserID来引用用户。
create table Avatar(
ID NUMBER CONSTRAINT pk_email PRIMARY KEY,
UserID number,
name VARCHAR2(32),
dateOfBirth DATE,
strength NUMBER(9),
gender VARCHAR2(7),
hoard INTEGER,
constraint FK_Avatar_User foreign key( UserID )
references User( ID )
);
create index IX_Avatar_User on Avatar( UserID, ID );
现在每个头像都有自己的ID值。每个头像只能分配给一个用户,但可以为多个头像输入相同的用户ID。索引加速访问。
然后显示分配给用户的头像:
select U.ID UserID, U.email, A.ID AvatarID, A.Name AvatarName
from Users U
join Avatar A
on A.UserID = U.ID
where U.ID = 123; -- If you are only interested in one particular user.
顺便说一句,除非你在医院的托儿所工作,否则你会发现 DateOfBirth 很少有默认定义。如果在创建记录时不知道该详细信息,则 NULL
优于 TODAY
。