gpt4 book ai didi

sql - 在UNION SELECT中使用SQL Case合并两个没有相似字段的表

转载 作者:行者123 更新时间:2023-12-02 09:46:50 27 4
gpt4 key购买 nike

我有两个SQL表(无法修改,这是一个如何在没有类似列的情况下获取它的问题),并且在使用内部联接列出城市和州时,我需要找出表类型:

CREATE TABLE authors 
(
au_id CHAR(3) NOT NULL,
au_fname VARCHAR(15) NOT NULL,
au_lname VARCHAR(15) NOT NULL,
phone VARCHAR(12) ,
address VARCHAR(20) ,
city VARCHAR(15) ,
state CHAR(2) ,
zip CHAR(5) ,
CONSTRAINT pk_authors PRIMARY KEY (au_id)
);

CREATE TABLE publishers
(
pub_id CHAR(3) NOT NULL,
pub_name VARCHAR(20) NOT NULL,
city VARCHAR(15) NOT NULL,
state CHAR(2) ,
country VARCHAR(15) NOT NULL,
CONSTRAINT pk_publishers PRIMARY KEY (pub_id)
);

我正在尝试使用CASE进行选择以正确输出:
SELECT CASE
WHEN LCASE(SUBSTR(/*suppose id*/, 0, 1)) == 'a'
THEN 'author'
ELSE 'publisher'
END
AS type, city, state
FROM authors
INNER JOIN publishers

这些表的格式使得ID有所不同,但名称也不同:
INSERT INTO authors VALUES('A01','Sarah','Buchman','718-496-7223', 
'75 West 205 St','Bronx','NY','10468');
INSERT INTO publishers VALUES('P01','Abatis Publishers','New York','NY','USA');

我试图达到这样的输出:
type        |   city        |   state
--------------------------------------------------
author | Rochester | NY
author | Syracuse | NY
publisher | New York | NY

当两个表没有相似的列时,如何有效地进行比较?我可以在表上调用字段值以检查它是否为null而不抛出SQL异常吗?

最佳答案

由于没有列可以在两个表之间进行比较,即没有什么可以过滤笛卡尔积后的行,因此内部联接将无法达到目的。这更像是从两个多集中选择记录并将它们组合在一起。在T-SQL中,可以使用Union来实现:

select 'authors' as [type]
, city,state
from authors
union
select 'publishers' as [type]
, city,state
from publishers

关于sql - 在UNION SELECT中使用SQL Case合并两个没有相似字段的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com