簡體   English   中英

比較兩個sql表

[英]Compare two sql tables

我有兩個表,一個帶有文本字符串,另一個帶有單詞。

在此輸入圖像描述

如何獲取表A中的每個字符串/行,並查看表A中表A中每個字符串包含多少個“單詞” - 得到如下結果:

表A.
id:1包含表B中的2個單詞(car,red)
id:2包含來自表B的2個單詞(house,hill)
id:3包含表B中的0個單詞
id:4包含來自表B的2個單詞(小,鞋)

<?php
// Get $TableA from TableA and $TableB from Table B (std code)

$result = array();
foreach ($TableA as $id => $string) {
    $result[$id] = array();
    $words = explode(' ', $string);
    foreach ($words as $word) {
        if (in_array($word, $TableB)) {
            $result[$id][] = $word;  
        }
    }
}

// - display $result - left as exercise!

考慮在聚合查詢中使用CROSS JOIN的純SQL解決方案,計算字符串單詞之間的LIKE實例。 下面使用條件SUM聚合計算總數,並使用GROUP_CONCAT輸出逗號分隔列表中的單詞:

SELECT t1.id, SUM(CASE WHEN t1.string LIKE CONCAT('%', t2.words, '%') 
                       THEN 1 
                       ELSE 0 
                  END) AS WordCount,
              GROUP_CONCAT(CASE WHEN t1.string LIKE CONCAT('%', t2.words, '%') 
                                THEN t2.words 
                                ELSE NULL 
                           END) AS Words
FROM Table1  t1
CROSS JOIN Table2 t2
GROUP BY t1.id

請參閱rextester演示

警告: CROSS JOIN會降低大型工作台的性能,因為笛卡爾產品(所有可能的組合配對)在兩組之間運行,可以非常快速地運行數百萬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM