Oracle sql 连接计数给我错误 00904。00000 - “%s:无效标识符
Oracle sql count of join gives me error of 00904. 00000 - "%s: invalid identifier
这是我的查询,它试图获取在 CUSTOMERS table 中列出的 CUSTOMER_IDs 也已经在 TRANSACTIONS table 中。
SELECT
DISTINCT COUNT(*)
FROM
(
SELECT
CUSTOMERS.CUSTOMER_ID
FROM
CUSTOMERS
INNER JOIN TRANSACTIONS
ON CUSTOMERS.CUSTOMER_ID = TRANSACTIONS.CUSTOMER_ID
)
这个查询returns
- 00000 - "%s: invalid identifier error.
我该如何修正我的查询?
A count(*)
将始终 return 一个数字,因此不需要对其进行 distinct
。听起来你想要的更像是:
SELECT COUNT( DISTINCT CUSTOMERS.CUSTOMER_ID )
FROM CUSTOMERS
INNER JOIN TRANSACTIONS
ON CUSTOMERS.CUSTOMER_ID = TRANSACTIONS.CUSTOMER_ID
假设transactions
中的customer_id
只能是一个有效的customers.customer_id
,那么你可以非常简化这个:
SELECT COUNT(DISTINCT T.CUSTOMER_ID)
FROM TRANSACTIONS T;
这是一个非常合理的假设。在结构正确的数据库中,TRANSACTIONS.CUSTOMER_ID
将被声明为 CUSTOMERS.CUSTOMER_ID
.
的外键
这是我的查询,它试图获取在 CUSTOMERS table 中列出的 CUSTOMER_IDs 也已经在 TRANSACTIONS table 中。
SELECT
DISTINCT COUNT(*)
FROM
(
SELECT
CUSTOMERS.CUSTOMER_ID
FROM
CUSTOMERS
INNER JOIN TRANSACTIONS
ON CUSTOMERS.CUSTOMER_ID = TRANSACTIONS.CUSTOMER_ID
)
这个查询returns
- 00000 - "%s: invalid identifier error.
我该如何修正我的查询?
A count(*)
将始终 return 一个数字,因此不需要对其进行 distinct
。听起来你想要的更像是:
SELECT COUNT( DISTINCT CUSTOMERS.CUSTOMER_ID )
FROM CUSTOMERS
INNER JOIN TRANSACTIONS
ON CUSTOMERS.CUSTOMER_ID = TRANSACTIONS.CUSTOMER_ID
假设transactions
中的customer_id
只能是一个有效的customers.customer_id
,那么你可以非常简化这个:
SELECT COUNT(DISTINCT T.CUSTOMER_ID)
FROM TRANSACTIONS T;
这是一个非常合理的假设。在结构正确的数据库中,TRANSACTIONS.CUSTOMER_ID
将被声明为 CUSTOMERS.CUSTOMER_ID
.