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