2017-04-06 63 views
0

我有兩個表與不同的數據,除了1列在兩個表中包含相同的ID。MYSQL - 如何獲得多個表的交叉結果

我做了1個查詢表,給了我不同的結果。

  • 表1:第一個查詢返回結果中X次出現超過 的COLUMN_ID列表。
  • 表2:第二個查詢返回以相同的第一個字母開頭的 COLUMN_ID。

我想合併這2個查詢以獲得交叉結果列表。

我嘗試以下,但它不工作:

SELECT COLUMN_ID, COUNT(*) AS cnt FROM `TABLE1` GROUP BY COLUMN_ID HAVING cnt > X 
UNION 
SELECT COLUMN_ID FROM `TABLE2` WHERE COLUMN_ID LIKE 'ABC-%' 

我怎樣可以得到一些結果優於10而與「ABC-%」開頭只顯示那些在COLUMN_IDs?

謝謝。

+2

你能提供一些樣本數據嗎? –

回答

0

使用以下

select COLUMN_ID from TABLE2 where COLUMN_ID LIKE 'ABC-%' and COLUMN_ID in 
(SELECT COLUMN_ID FROM `TABLE1` GROUP BY COLUMN_ID HAVING count(*) > X) 

替換X你想要的數最小值。

+0

它工作正常。非常感謝你。我無法調高,但我會。 :) –

+0

@JulieHumbert - 不客氣:)。請接受正確答案,以便其他人可以使用該解決方案。 –

0

連接應該工作。

select a.column_id, count(*) as cnt 
    from table1 a 
    join table2 b 
    on b.column_id = a.column_id 
where b.column_id like 'ABC-%' 
group by a.column_id 
having count(*) > 10;