加入时表中的唯一ID

时间:2016-03-24 14:19:58

标签: sql oracle oracle10g

有以下方案:

Table ticket

 - **ticketid** int;
 - **terr** int;

Table terrlocation

 - **terrid** int;
 - **terr_desc** int;

因此,执行以下查询后:

SELECT * FROM ticket tck
LEFT JOIN terrlocation ter on tck.terr = ter.terrid

我会得到:

ticketid | terr | terrid | terr_desc
--------------------------------------
01       | 02   | 02     | A      
01       | 02   | 02     | B
01       | 02   | 02     | C

但我的任务是检查,如果有任何连接到票证的terrlocation中的记录, 1,如果不是0.我可以通过案例实现它,但是,我得到3条记录而不是1条记录。

在我看来,我需要将子查询放在LEFT JOIN中,如

SELECT * FROM ticket tck LEFT JOIN ((SELECT DISTINCT FROM terrid)
terrlocation ter on tck.terr = ter.terrid)

但它不起作用。我怎样才能实现我的目标? M.B。通过CTE更好吗?

1 个答案:

答案 0 :(得分:1)

当您使用DISTINCT时,您必须指定必须区分的列!试试这个:

SELECT tck.*,CASE WHEN t.terrid is null THEN 0 else 1 end as Your_IND
FROM ticket tck
LEFT JOIN (SELECT DISTINCT  terrid FROM terrlocation) t
 on tck.terr = t.terrid