繁体   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