[英]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.