gpt4 book ai didi

mysql - 创建一个显示两个具有特定值的列表的 View

转载 作者:行者123 更新时间:2023-11-30 23:24:27 24 4
gpt4 key购买 nike

我想要两个列表,它们都显示各自表中未被另一个表使用的记录。

两个列表,一个用于表a_aif,一个用于表a_proxy。该列表仅显示 a_fees.fee_source 列中不存在的 fee_source_id

这是我目前所拥有的(两个单独的查询)。有什么方法可以在单独的列中查看这两个列表?

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);

最佳答案

此方法应该与您正在使用的 RDBMS 完全无关。

一对 LEFT JOIN,您可以从中选择右侧为 NULL 的记录。 UNION 查询用于从 a_aifa_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

http://sqlfiddle.com/#!2/cc170/3

关于mysql - 创建一个显示两个具有特定值的列表的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13999460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com