如何使用从两个表中的选择查询问题检索行

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 看起来应该是 INTEffective_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 也很有帮助)。

以上是关于如何使用从两个表中的选择查询问题检索行的主要内容,如果未能解决你的问题,请参考以下文章

如何使用单个查询联合从另一个表中检索到的表列表?

如何从两个表中选择同一字段中具有相同值的行?

从数据表中检索信息

CakePHP:如何使用内部联接从两个表中检索数据?

如何从 SQL 表中选择特定行并连接 SQL 服务器中的多个表?

从codeigniter中的两个表中选择查询