【发布时间】:2016-06-18 11:36:33
【问题描述】:
假设我有下面的表(ID 和 ID2 分别是 PK/FK),我将如何设计一个查询,该查询会两次提取 detailTable.name 列,第一个表中的每个 ID 一次?
我想要的结果集是这样的:
+------+--------+------+---------+
| Name | Name 2 | Code | Created |
+------+--------+------+---------+
| Dave | Steven | AAAA | 1/10/10 |
+------+--------+------+---------+
我曾尝试使用两个连接来执行此操作,但一直收到此错误:
SELECT
DT.name as [Name 1],
DT.name as [Name 2]
--other columns would go here
FROM linkTable LT
LEFT JOIN
detailTable DT
ON LT.id2 = DT.id
LEFT JOIN
linkTable LT2
ON LT2.id = DT.id
where DT.id = '74'
错误:将数据类型 nvarchar 转换为 bigint 时出错
链接表
+-----+-------+--------+-------------------------+-----------+
| ID | ID2 | Code | Created | CreatedBy |
+-----+-------+--------+-------------------------+-----------+
| 76 | 15157 | AAAA | 1/1/10 | 844 |
+-----+-------+--------+-------------------------+-----------+
| 77 | 15340 | AAAA | 2015-11-24 15:12:25.057 | 842 |
+-----+-------+--------+-------------------------+-----------+
| 94 | 14644 | GEOFA | 2015-11-13 15:01:19.977 | 842 |
+-----+-------+--------+-------------------------+-----------+
| 94 | 16346 | XX2222 | 2015-11-13 15:01:57.290 | 842 |
+-----+-------+--------+-------------------------+-----------+
| 108 | 15966 | EMPE | 2015-11-25 12:38:37.377 | 842 |
+-----+-------+--------+-------------------------+-----------+
明细表
+-------+----------+
| ID | Name |
+-------+----------+
| 76 | Dave |
+-------+----------+
| 15157 | Steven |
+-------+----------+
| 94 | Roger |
+-------+----------+
| 108 | Geoff |
+-------+----------+
| 16346 | Penelope |
+-------+----------+
| 15966 | Paul |
+-------+----------+
| 77 | Michael |
+-------+----------+
| 14644 | Colin |
+-------+----------+
| 15340 | Nigel |
+-------+----------+
谢谢:)
【问题讨论】:
-
所有三个 ID 列都是 bigint
-
。 .如果所有 id 列都是数字,我看不出该错误是如何发生的。该查询显然不符合您的意图,但这是一个不同的问题。如果你把
'74'的单引号去掉,你还会遇到同样的问题吗? -
我认为引号引起了问题,并且加入了错误的表格。谢谢!
标签: sql sql-server