gpt4 book ai didi

sql - 是否可以 INNER JOIN 2 不同类型/值的 id?

转载 作者:行者123 更新时间:2023-12-04 13:47:53 25 4
gpt4 key购买 nike

正如标题所说,我正在尝试对具有不同值/数据类型的列进行 INNER JOIN

在一个数据库表中,我们称它为表 A 我想执行一个选择语句来获取几列(主题、名称、描述、日期)的值。虽然我也想要一个关系名称。然而,问题是关系名称(在关系表 B 中设置)在表 A 中显示为字符串值 (D0001001),而不是文字名称。

要获取文字关系名称,请使用表 B 的链接,该链接具有 ID 列 1001 - 1000~ 和关系“文字”名称列。例如,在表 B 中,ID 1001 匹配公司名称 MC DONALDS,而在表 A 中,RelationID 是 D0001001 (MC DONALDS)。

别问我为什么A表的RelationID前面有一个奇怪的D000,我也不知道,但它有一些功能。

回到问题。我想从表 A 中获取一些字段,但也想从表 B 中获取与表 A 的 relationID 值匹配的文字关系名称。

所以问题是,我如何INNER JOIN 这两个不同的值/类型?表A中的RelationID是字符串类型(准确的说是nvarchar),表B中匹配关系名的ID是一个 >整数类型。

我认为我可以通过以下方式修复它:

  1. 在表 B 的 ID(1001 整数)部分匹配表 A 的 RelationID(D0001001 字符串)的查询中执行 LIKE 语句。然而,这没有用

  2. 执行 REPLACE 语句,将 RelationID“D000”值替换为空值:“”。这可能仍然需要对表 A 值进行某种转换为整数。这里有一些错误可能是因为语法错误。

我目前拥有的:

SELECT 
TableA.subject, TableA.Name, TableA.Description, TableA.Date,
TableB.RelationName
INNER JOIN
TableB ON TableA.RelationID = TableB.ID

这返回了一个不可能的转换(字符串/整数)。

然后我尝试了:

SELECT 
TableA.subject, TableA.Name, TableA.Description, TableA.Date,
TableB.RelationName
INNER JOIN
TableB ON TableB.ID LIKE '% TableA.RelationID %'

这也不起作用 (EOF)。

为了让我的表格更清晰一些:

表A +------------+------------+----------------+----- --------------+------------+ |关系ID |主题 |说明 |名称 |日期 | +------------+------------+----------------+----- --------------+------------+ | D0001001 |快餐 |一些描述 |填表人姓名 | 13-3-2015 | | D0001002 |饮品 |一些描述 |填表人姓名 | 10-3-2015 | | D0001003 |汽车 |一些描述 |填表人姓名 | 2015 年 7 月 3 日 | +------------+------------+----------------+----- --------------+------------+

表B

+------+--------------+
| ID | RelationName |
+------+--------------+
| 1001 | MC DONALDS |
| 1002 | COCA COLA |
| 1003 | MERCEDES |
+------+--------------+

--> INNER加入ID和RelationID

还有其他选择吗?提前致谢!

最佳答案

要避免转换错误,请使用 Substring 删除 RelationID 中的第一个字符,然后将 RelationID convertINT 然后 JOINtableA 中的 ID

SELECT TableA.subject,
TableA.Name,
TableA.Description,
TableA.Date,
TableB.RelationName
FROM tableA
INNER JOIN TableB
ON CONVERT(INT, Substring(TableA.RelationID, 2, Len(TableA.RelationID))) = TableB.ID

关于sql - 是否可以 INNER JOIN 2 不同类型/值的 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29040305/

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