[英]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
查看此答案以了解有关联接的信息:
希望这可以帮助。
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.