我的数据库中有两个表(品牌和客户)。
品牌
客户
我想要的是首先查找每个客户的BRANDID。 然后comapre如果BRANDID再次与BRANDS表匹配BRANDID。 如果匹配,则适当的BRANDNAME会进入Customers BRANDNAME。 如果不匹配,则字符串(无效)进入Customers BRANDNAME。
我是否需要使用INNER JOIN和CASE语句?
答案 0 :(得分:1)
Oracle有自己的外连接语法,它比标准SQL好得多,但这里是ANSI SQL查询:
select customers.id,customers.brandid,
if(brands.brandname is null,'Invalid',brands.brandname) as 'Brandname'
from customers
left join brands on (customers.brandid = brands.brandid) ;
答案 1 :(得分:1)
你只需要一个OUTER JOIN加上COALESCE:
select
c.id,
c.brandid,
coalesce(b.brandname, 'Invalid')
from customers c
left join brands b on c.brandid = b.brandid;
这是纯粹的标准SQL,应该可以在任何DBMS中运行。
答案 2 :(得分:1)
UPDATE Customers c
SET BRANDNAME = COALESCE( ( SELECT b.BRANDNAME
FROM Brands b
WHERE c.BRANDID = b.BRANDID ),
'Invalid' );
查询1 :
SELECT * FROM Customers
<强> Results 强>:
| ID | BRANDID | BRANDNAME |
|----|---------|-----------|
| 1 | 1 | APPLE |
| 1 | 2 | HTC |
| 1 | 3 | SAMSUNG |
| 1 | 10 | Invalid |