有以下方案:
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更好吗?
答案 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