我有两个表(tabl1
和tbl2
),我希望查询通过匹配tbl2
和tbl1
将col1id
连接到col2id
,以便结果集包含tbl1
数据和name
中的tbl2
列。
以下查询不返回数据:
SELECT Date
,cast(tbl1.col1_id as varchar) AS "col1name"
,tbl2.name::varchar AS "tabl2name"
,tbl1.currency::money as "Avg currency"
,CASE WHEN rich IS NULL then 'Unknown'
ELSE 'True' END AS "bank"
,CAST(Ranking AS FLOAT) / 18 + 1 AS "Rich Ranking"
,tbl1.Reviews as "Reviews"
FROM tbl1
JOIN tbl2
ON tbl1.col1id = tbl2.col2id
tbl1.col1id
包含类似于3,999,999
的数字当我执行完全右联接时,我可以从两个单独的表中获取所有数据
我创建了一个新表,旁边有我想要的名字。
我创建了一个新的表,其中的值与
3,999,999
完全匹配,但最后没有匹配,所以我认为类型有问题,而且我一直在处理数据,我陷入了困境。我猜这些值不是同一类型的,所以我做了一些额外的工作,把它作为integer或varchar输入到其他地方和同一个查询中。
但是返回的结果是空的,但没有产生错误,所以我相信这是我这边的类型错误。
最佳答案
如果你只想做你在帖子里描述的,最好避免不必要的复杂性。下面的东西能退货吗?
SELECT tbl1.*, tbl2.name
FROM tbl1
JOIN tbl2
ON tbl1.col1id = tbl2.col2id;
如果什么都没有回来,我会首先建议检查是否有任何tbl2.col2id匹配tbl1.col1id。
您可以通过使用左连接(atm通过使用join您实际上使用的是内部连接)轻松地完成这一任务。然后,行集将包含来自tbl1的所有行,如果不可能进行联接,则在tbl2.name中有空值。
除此之外,我还要确保tbl1.col1id和tbl2.col2id的数据类型是相同的。