我需要知道,这是正确的方法:
(SELECT id, name, 1 AS reference FROM antenna WHERE id IN (SELECT antenna_id FROM reference))
UNION DISTINCT
(SELECT id, name, 0 AS reference FROM antenna WHERE id NOT IN (SELECT antenna_id FROM reference))
已经做了一段时间,即使它完美无缺,也很难看。
答案 0 :(得分:1)
脱离我的头脑,我不确定它是否有效,测试和基准:
SELECT antenna.id, antenna.name, CASE WHEN COALESCE(reference.antenna_id, 0)!=0
THEN 1 ELSE 0 END AS reference FROM antenna LEFT JOIN reference
ON antenna.id=reference.antenna_id
答案 1 :(得分:0)
是。它会工作。 但与JOIN相比,IN子句的性能较差。此外,IN子句限制为1000条记录。
请改用此查询 -
(SELECT id, name, 1 AS reference FROM antenna a, reference ref
where a.id = ref.antenna_id)
UNION
(SELECT id, name, 0 AS reference FROM antenna a, reference ref
where a.id != ref.antenna_id)