如何使用从两个表中的选择查询问题检索行
Posted
技术标签:
【中文标题】如何使用从两个表中的选择查询问题检索行【英文标题】:How to retrieve rows using select query problem from two tables 【发布时间】:2021-06-30 14:13:46 【问题描述】:表 A 的行带有“FS”,表 B 的行带有“FS”和“SC” 我需要创建一个 SQL 查询,该查询可以返回在表 B 中具有 FST_SC COLUMN 作为“SC”行的行,因为我们在表 A 中只有“FS”记录。我的要求是更改该行的 RATE在表 B 到 0(我可以在检索行后执行此操作并且我知道如何执行此操作)。
CREATE TABLE TABLEA
(
CONTRACT TEXT,
ID text,
CLASS TEXT,
ZONE TEXT,
CHARGE TEXT,
FST_SC TEXT,
RATE TEXT,
EFFECTIVE_DATE TEXT,
PRIMARY KEY (CONTRACT, ID, CLASS, ZONE, CHARGE, FST_SC, RATE, EFFECTIVE_DATE)
);
CREATE TABLE TABLEB
(
CONTRACT TEXT,
ID text,
CLASS TEXT,
ZONE TEXT,
CHARGE TEXT,
FST_SC TEXT,
RATE TEXT,
EFFECTIVE_DATE TEXT,
PRIMARY KEY (CONTRACT, ID, CLASS, ZONE, CHARGE, FST_SC, RATE, EFFECTIVE_DATE)
);
表格
|MS|US|UE||1|NR|FST|15|09/23/2021|
表B
|MS|US|UE||1|NR|FST|15|09/23/2021|
|MS|US|UE||1|NR|SC|15|09/23/2021|
期望的输出:
|MS|US|UE||1|NR|SC|15|09/23/2021|
这是我正在尝试的,但它给了我 0 行: EFFECTIVE_DATE 有计数(DISTINCT FST_SC)=1) AND FST_ADL_SC = 'SC';
【问题讨论】:
请展示您当前的尝试并描述其中的问题。如果您有任何错误,请将错误文本作为纯文本发布。 您不应该使用包含(几乎)所有列表的主键!这是一个非常糟糕的做法.......并且主键绝不能包含像TEXT
(或更好:VARCHAR(MAX)
)这样的大列 - 它应该尽可能小
在不相关的说明中,TEXT/NTEXT
数据类型多年来一直在弃用列表中,您应该改用 VARCHAR(MAX)/NVARCHAR(MAX)
。话虽如此,您可能不应该为您发布的列,Zone 和 Rate 看起来应该是 INT
和 Effective_Date
应该是 DATE
。如果您对架构有任何控制权,则应尽早更改此设置。
@marc_s - 表已创建,对此无能为力。
@GarethD 我同意你的看法,但表已经创建,只是添加到这里以大致了解结构
【参考方案1】:
SELECT *
FROM TABLEA
JOIN TABLEB ON TABLEA.CONTRACT = TABLEB.CONTRACT
WHERE TABLEA.FST_SC = 'SC' AND TABLEB.FST_SC = 'SC'
【讨论】:
需要表 B 中的一行,而表 A 中没有“SC”行 请解释您的代码(即使代码 cmets 也很有帮助)。以上是关于如何使用从两个表中的选择查询问题检索行的主要内容,如果未能解决你的问题,请参考以下文章