MYSQL语法,合并两个查询

时间:2017-03-22 10:47:48

标签: mysql

我希望表标识符在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}}

请帮助解决语法问题。我相信我需要一个表格标识符,但不知道如何做到这一点

由于

2 个答案:

答案 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将不正确。相关子查询是一种更安全的解决方案。