我想要两个列表,它们都显示来自各自表的记录,这些记录没有被另一个表使用。
两个列表,一个用于表 a_aif ,另一个用于表 a_proxy 。列表仅显示fee_source_id's
a_fees.fee_source
个SELECT a_aif.fee_source_id
FROM a_aif, a_fees
WHERE a_fees.fee_source NOT IN (SELECT a_aif.fee_source_id);
SELECT a_proxy.fee_source_id
FROM a_proxy, a_fees
WHERE a_fees.fee_source NOT IN (SELECT a_proxy.fee_source_id);
这是我到目前为止(两个单独的查询)。有没有办法在不同的列中使用这两个列表进行查看?
{{1}}
答案 0 :(得分:0)
此方法应该与您正在使用的RDBMS非常相关。
从中选择右侧为LEFT JOIN
的记录的NULL
对将执行此操作。 UNION
查询用于从a_aif
和a_proxy
表格构建ID的主列表。
SELECT
full_list.fee_source_id,
CASE WHEN aif_fee_source_id IS NOT NULL THEN 'present' ELSE 'not-present' END AS aif,
CASE WHEN proxy_fee_source_id IS NOT NULL THEN 'present' ELSE 'not-present' END AS proxy
FROM (
/* UNION list gets total list of ids from both tables */
SELECT fee_source_id FROM a_aif
UNION SELECT fee_source_id FROM a_proxy
) full_list
LEFT JOIN (
/* First subquery joins to get ids not present in a_aif */
SELECT fee_source_id AS aif_fee_source_id
FROM
a_aif
LEFT JOIN a_fees ON a_aif.fee_source_id = a_fees.fee_source
) aif ON full_list.fee_source_id = aif_fee_source_id
LEFT JOIN (
/* Second subquery joins to get ids not present in a_proxy */
SELECT fee_source_id AS proxy_fee_source_id
FROM
a_proxy
LEFT JOIN a_fees ON a_proxy.fee_source_id = a_fees.fee_source
) proxy ON full_list.fee_source_id = proxy.proxy_fee_source_id