我希望表标识符在count(*)上,以便我可以组合这两个查询 查询1
SELECT
T.TARGET_NAME, T.TARGET_PUBLIC_NAME
FROM
KB_TARGETS T
WHERE
T.TARGET_ID = ?;
QUERY2
SELECT
T.TARGET_NAME, T.TARGET_PUBLIC_NAME, OP.COUNT(*) AS COUNT
FROM
Table2 T,Table1 OP
WHERE
T.TARGET_ID = ?;
进入
{{1}}
请帮助解决语法问题。我相信我需要一个表格标识符,但不知道如何做到这一点
由于
答案 0 :(得分:1)
SELECT
T.TARGET_NAME, T.TARGET_PUBLIC_NAME, OP.COUNT(*) AS COUNT
FROM
Table2 T join Table1 OP on T.TARGET_ID=P.TARGET_ID
WHERE
T.TARGET_ID = ?;
group by T.TARGET_NAME, T.TARGET_PUBLIC_NAME
答案 1 :(得分:0)
正如我所解释的那样,使用相关子查询的最简单方法是:
SELECT T.TARGET_NAME, T.TARGET_PUBLIC_NAME,
(SELECT COUNT(*) AS COUNT
FROM Table1 OP
WHERE OP.TARGET_ID = T.TARGET_ID
) as cnt
FROM KB_TARGETS T
WHERE T.TARGET_ID = ?;
使用JOIN
时必须非常小心。如果COUNT()
位于多行TARGET_ID
上,则KB_TARGETS
将不正确。相关子查询是一种更安全的解决方案。