所以这是我的问题......
你好在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的GoCode值是从Go_H出现在GoCode中的,并计算它们,这样我得到两个表中都存在的总数o GO ID。
我来选择go_H.GoCode和go_J.GoCode,但我不知道如何比较它们以找到公共行然后计算它们......
任何帮助?
答案 0 :(得分:2)
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
检查此答案以了解联接:
What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?
答案 1 :(得分:1)
希望这有帮助。
select count(*) from go_J j join go_H h on h.GoCode=j.GoCode;
答案 2 :(得分:1)
查找2 table
之间有多少行相似Speech
要查找go_H中有多少行不在go_J
中SELECT COUNT(*) totalCount
FROM go_H a
INNER JOIN go_J b
ON a.GoCode = b.GoCode
要查找go_H中没有多少行go_H
SELECT COUNT(*) totalCount
FROM go_H a
LEFT JOIN go_J b
ON a.GoCode = b.GoCode
WHERE b.GoCode IS NULL
答案 3 :(得分:0)
您可以通过运行类似于此的查询在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
}
}
这不是最有效的方法,但它会产生结果。