有没有办法在一个 table 中搜索某些值,如果成功找到,则更新另一个 table?
Is there a way to search one table for certain values, and if successfully found, then update a different table?
大家下午好,
这是我第一次使用SQL,所以请原谅我是新手。我创建了三个不同的 table:
CREATE TABLE employee
(ID int,
fname text,
lname text,
age int,
hiredate date);
CREATE TABLE address
(ID int,
address1 text,
address2 text,
city text,
state text,
zip text);
CREATE TABLE contact
(ID int,
cellphone text,
homephone text,
email text);
我收到指示,我应该通过“在 where 子句中使用 fname 和 lname”来更新联系人 table 中某人的手机号码 phone。
我知道如何在 table 中直接更新此人的 phone 号码,但是在两个不同的 table 之间使用 IN 和 WHERE 结合 UPDATE 真的很麻烦我..有什么方法可以做到这一点而不涉及任何复杂的解决方案吗?
我的思路涉及提出某种如果-那么解决方案。即,如果我可以在 table 员工中搜索特定的 fname 和 lname 并找到它,然后用我指定的新号码更新联系人 cellphone 号码。但是..我什至不知道我是否可以做这样的 if-then 语句。有人有什么建议吗?
感谢您的宝贵时间!
update contact
set cellphone = 'xxx-xxx-xxxx', homephone = 'xxx-xxx-xxxx'
where ID = (
select ID from employee
where fname = 'Bob' and lname = 'Jones'
);
这确实假设只有一名员工会匹配,否则会导致错误(这通常是您希望发生的情况。)
这使用了 IN CLAUSE
,因为可能有多个 ID 具有相同的名称组合。
UPDATE contact
SET cellphone = '1234567890'
WHERE ID IN ( SELECT ID FROM employee WHERE fname = 'A' AND lname = 'B');
大家下午好,
这是我第一次使用SQL,所以请原谅我是新手。我创建了三个不同的 table:
CREATE TABLE employee
(ID int,
fname text,
lname text,
age int,
hiredate date);
CREATE TABLE address
(ID int,
address1 text,
address2 text,
city text,
state text,
zip text);
CREATE TABLE contact
(ID int,
cellphone text,
homephone text,
email text);
我收到指示,我应该通过“在 where 子句中使用 fname 和 lname”来更新联系人 table 中某人的手机号码 phone。
我知道如何在 table 中直接更新此人的 phone 号码,但是在两个不同的 table 之间使用 IN 和 WHERE 结合 UPDATE 真的很麻烦我..有什么方法可以做到这一点而不涉及任何复杂的解决方案吗?
我的思路涉及提出某种如果-那么解决方案。即,如果我可以在 table 员工中搜索特定的 fname 和 lname 并找到它,然后用我指定的新号码更新联系人 cellphone 号码。但是..我什至不知道我是否可以做这样的 if-then 语句。有人有什么建议吗?
感谢您的宝贵时间!
update contact
set cellphone = 'xxx-xxx-xxxx', homephone = 'xxx-xxx-xxxx'
where ID = (
select ID from employee
where fname = 'Bob' and lname = 'Jones'
);
这确实假设只有一名员工会匹配,否则会导致错误(这通常是您希望发生的情况。)
这使用了 IN CLAUSE
,因为可能有多个 ID 具有相同的名称组合。
UPDATE contact
SET cellphone = '1234567890'
WHERE ID IN ( SELECT ID FROM employee WHERE fname = 'A' AND lname = 'B');