首页 > 解决方案 > 如何使用子查询显示多个表中的列名

问题描述

我创建了以下表格并插入了这些值:

create table customer (cid int, cname varchar(25), email varchar(25), phone int, status varchar(25), primary key (cid));
create table accounts( cid int, account int, atype varchar(25), balance int, foreign key(cid) references customer(cid));
create table address( cid int, street varchar(25), city varchar(25), country varchar(25), foreign key(cid) references customer(cid));




insert into customer values (101,'A', 'a@gmail.com', 99,'active');
insert into accounts values (101, 123, 'SA', 1000);
insert into address values (101, 'HMT','Blore','India');

insert into customer values (102,'B', 'b@gmail.com', 199,'active');
insert into accounts values (102, 123, 'CA', 2000);
insert into address values (102, 'Jayanagar','Blore','India');

我的目标是显示状态为活动的客户的 cname、帐户和余额。

我试过用这个写查询:(我不能用这个打印列 cname)但它显示了其余的。

select account, balance
from accounts
where cid in (select cid from customer where status = 'active');

这不起作用:

select cname, account, balance
from  customer, accounts
where cid in (select cid from customer where status = 'active');

标签: mysqlsqldatabase

解决方案


一种可能的方法是连接公共客户 ID 上的两个表。

SELECT c.cname,
       a.account,
       a.balance
       FROM customer c
            LEFT JOIN accounts a
                      ON a.cid = c.cid
       WHERE c.status = 'active';

推荐阅读