数据库:如何从具有一个公共列的两个表中获取多个值

Posted

技术标签:

【中文标题】数据库:如何从具有一个公共列的两个表中获取多个值【英文标题】:Database: how to get multiple values from two tables having one common column 【发布时间】:2018-09-30 17:29:05 【问题描述】:

我有两个两张表:

表 #1:列

Producer   ConsumerKey    time                resourcepath    Day
------------------------------------------------------------------
test           7890       2018-09-25 09:44     /12345         23
dev            5678       2018-09-25 09:10     /abcv          26

表 #2:列

ConsumerName    ConsumerKey    Day
-----------------------------------
admin              7890        23
dummy              5678        26

我需要以这样的方式查询表,以便从表 1 中获取不同的值,并从表 2 中获取特定日期的相应消费者名称

所以最终的结果应该是这样的:

Producer    ConsumerKey   time                resourcepath   ConsumerName   Day
-------------------------------------------------------------------------------
test            7890      2018-09-25 09:44    /12345         admin          23
dev             5678      2018-09-25 09:10    /abcv          dummy          26

有没有办法得到这个。请帮忙

谢谢

【问题讨论】:

【参考方案1】:

基本连接应该可以工作。

SELECT t1.producer,
       t1.consumerkey,
       t1.time,
       t1.resourcepath,
       t2.consumername,
       t1.day
       FROM table1 t1
            INNER JOIN table2 t2
                       ON t2.consumerkey = t1.consumerkey
                          AND t2.day = t1.day;

【讨论】:

感谢您的回复。 但是这怎么可能搜索给定的日期呢? 添加WHERE 子句,如WHERE t1.time = ...【参考方案2】:
SELECT DISTINCT table1.Producer, table1.ConsumerKey, table1.Time, table1.resourcepath, table1.day, table2.ConsumerName 
FROM table1, table2 
WHERE table1.ConsumerKey = table2.ConsumerKey 
AND table1.time = "<ENTER YOUR TIME HERE>"

这可以很好地获取以下详细信息。

【讨论】:

以上是关于数据库:如何从具有一个公共列的两个表中获取多个值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nhibernate 从连接两个具有所有 id 的表中选择只有一个不同列的多个列是 UNIQUEIDENTIFIER

如何使用sql从具有不同列的两个表中获取不同的记录

从具有多个分区列的配置单元表中获取最新数据

用其他表中列的唯一值数填充sql表中的列

从 MySQL 中具有不同列的表的多个连接结果中删除重复项

单个查询从具有不同列的多个表中获取记录