簡體   English   中英

計算MySQL中兩個表之間的公共行

[英]Count common rows between two tables in mysql

所以這是我的問題

您好,在mysql中有兩個表,分別稱為go_H和go_J,看起來都像這樣:

go_H

+---------------+------------+
| gene          | GoCode     |
+---------------+------------+
| DNAJC25-GNG10 | GO:0004871 |
| DNAJC25-GNG10 | GO:0005834 |
| DNAJC25-GNG10 | GO:0007186 |
| LOC100509620  | GO:0005215 |
| LOC100509620  | GO:0006810 |
| LOC100509620  | GO:0016021 |
| PPIAL4E       | GO:0000413 |
| PPIAL4E       | GO:0003755 |
| PPIAL4E       | GO:0005737 |
| PPIAL4E       | GO:0006457 |
| LOC105371242  | GO:0000413 |
+----------------------------+

go_J

+------------+
| GoCode     |
+------------+
| GO:0007254 |
| GO:0007256 |
| GO:0007257 |
| GO:0042655 |
| GO:0043506 |
| GO:0043507 |
| GO:0043508 |
| GO:0046328 |
| GO:0046329 |
| GO:0046330 |
+------------+

基本上,我想要實現的是查看go_J的GoCode值出現在Go_H的GoCode中,並對它們進行計數,以便獲得兩個表中都存在的o ID總數。

我來選擇go_H.GoCode和go_J.GoCode,但是我不知道如何比較它們以找到常見的行,然后對它們進行計數...

有什么幫助嗎?

SELECT COUNT(*) FROM go_H
INNER JOIN go_J USING GoCode

INNER JOIN =>基於聯接列(GoCode)的兩個表中的行

替代方案:

SELECT COUNT(*) FROM go_H h
INNER JOIN go_J ON j.GoCode = h.GoCode

查看此答案以了解有關聯接的信息:

INNER JOIN,LEFT JOIN,RIGHT JOIN和FULL JOIN有什么區別?

希望這可以幫助。

select count(*) from go_J j join  go_H h on h.GoCode=j.GoCode;

查找2個表之間有多少行相似

SELECT  COUNT(*) totalCount
FROM    go_H a 
        INNER JOIN go_J b
            ON a.GoCode = b.GoCode

查找go_H中沒有多少行

SELECT  COUNT(*) totalCount
FROM    go_H a 
        LEFT JOIN go_J b
            ON a.GoCode = b.GoCode
WHERE   b.GoCode IS NULL

查找go_J中沒有多少行

SELECT  COUNT(*) totalCount
FROM    go_J a 
        LEFT JOIN go_H b
            ON a.GoCode = b.GoCode 
WHERE   b.GoCode IS NULL

您可以通過運行類似於以下查詢的方式在SQL中實現此目的:

SELECT
 *,
count (GoCode)
 FROM (    
SELECT GoCode FROM go_H
    UNION
    SELECT GoCode FROM go_H )a
group by a.gocode

這將為您提供一個表格,其中每個代碼都在一個列中,然后在兩個表格中均出現該代碼的次數

PHP的替代方法是使用PDO將兩個表都放入數組,並使用in_array進行檢查

<?php
foreach ($go_H as $GoCode) {
    if (in_array($GoCode, $go_J)) {
        // handle codes in both tables
    }
}

這不是最有效的方法,但會產生結果。

暫無
暫無

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

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