【问题标题】:Join two tables and compare two columns to see if they are equal连接两个表并比较两列,看看它们是否相等
【发布时间】:2013-09-08 07:01:50
【问题描述】:

我的访问数据库中有两个表,我可以根据它们的主键 Grant Number 加入这些表,但是这两个表都包含一个到期日期列,我想看看到期日期是否匹配。

First Table: "Everything2013" 
    Columns: Claim Name, Grant Number, Expiry Date

Second Table: "Yukon Claims Govt" 
    Columns: Claim Name, Claim Owner, Grant Number, StakingDate, ExpiryDate

我想根据作为主键的授权号加入表,然后我想查看两个表中每个授权号的到期日期是否相同。基本上,我正在检查一个表中的到期日期,以查看它们是否与另一表中相同授权号的到期日期匹配。

【问题讨论】:

  • Grant Number 不包含在[Yukon Claims Govt] 的列中,Expiry Date 也不包含?
  • 对不起,Grant Number 也是第二个表中的一列,我在原始消息中错过了它
  • 您是否只想查看到期日期是否匹配,还是只想查看到期日期匹配的记录?

标签: sql database ms-access join


【解决方案1】:
select E.Claim_Name, E.Grant_Number, Y.StakingDate \
from Everything2013 e
inner join Yukon_Claims_Govt  y
on E.[Grant_Number]=Y.[Grant_number]
where E.Expiry_Date=Y.ClaimExpiryDate;

【讨论】:

  • 现在,如果您只需要日期而不是日期时间,并且您当前正在存储时间值,它确实会变得更加复杂。
  • +1 但如果到期日期可以为空,则可能需要进一步的条件OR (e.[Expiry Date] IS NULL AND y.[Expiry Date] IS NULL)
【解决方案2】:

我假设您想从两个表中获取具有相同授权号和到期日期的结果集。

select Grant_Number,Claim_Name, StakingDate 
from Everything2013
inner join Yukon_Claims_Govt 
on Everything2013.Grant_Number=Yukon_Claims_Govt.Grant_Number
AND Everything2013.Expiry_Date=Yukon_Claims_Govt.ClaimExpiryDate;

【讨论】:

  • 这并不能完全返回我想要的结果,我认为 WHERE 对我的情况更有用。干杯
【解决方案3】:

那你为什么不把加入到期日期并提取其他字段。

【讨论】:

  • 我不能将加入放在到期日,因为它们不是唯一的。授权号可以具有相同的到期日期。
【解决方案4】:

听起来你想要这样的东西:

select Claim_Name, Grant_Number, StakingDate from Everything2013
inner join Yukon_Claims_Govt 
on Everything2013.Expiry_Date=Yukon_Claims_Govt.ClaimExpiryDate;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    相关资源
    最近更新 更多