Oracle中的简单SQL语句

时间:2015-05-09 05:58:42

标签: sql oracle

我的数据库中有两个表(品牌和客户)。

品牌

my tables

客户

我想要的是首先查找每个客户的BRANDID。 然后comapre如果BRANDID再次与BRANDS表匹配BRANDID。 如果匹配,则适当的BRANDNAME会进入Customers BRANDNAME。 如果不匹配,则字符串(无效)进入Customers BRANDNAME。

我是否需要使用INNER JOIN和CASE语句?

3 个答案:

答案 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)

SQL Fiddle

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 |