2017-03-22 108 views
0

我想要一個表標識設置在COUNT(*),這樣我可以結合這兩個查詢 查詢1MYSQL語法,合併兩個查詢

SELECT 
    COUNT(*) AS COUNT 
FROM 
    Table1 OP 
WHERE 
    OP.TARGET_ID=? 

QUERY2

SELECT 
    T.TARGET_NAME, T.TARGET_PUBLIC_NAME 
FROM 
    KB_TARGETS T 
WHERE 
    T.TARGET_ID = ?; 

SELECT 
    T.TARGET_NAME, T.TARGET_PUBLIC_NAME, OP.COUNT(*) AS COUNT 
FROM 
    Table2 T,Table1 OP 
WHERE 
    T.TARGET_ID = ?; 

請幫助語法。我相信我需要計數表標識符,但不知道該怎麼做

感謝

+0

請提供樣本數據和期望的結果。 –

+0

不,但我覺得我現在應該 – yankel

+0

三列,每列一列 – yankel

回答

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 
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。如果TARGET_ID位於KB_TARGETS的多行上,則COUNT()將不正確。相關的子查詢是一個更安全的解決方案。