簡體   English   中英

MYSQL-顯示查詢結果計數而不會丟失實際結果條目

[英]MYSQL - displaying query result counts without losing actual result entries

抱歉,這是一個非常愚蠢的問題,但是我對MYSQL語法不太熟悉。

我一直在跑步:

USE hg19; 
SELECT DISTINCT (name2), txStart, txEnd 
FROM refGene 
WHERE name2 LIKE '[genename]';

它將輸出所有條目,這很好,除非我正在尋找一個不存在的條目,否則我將得到一個空白(如果斷開與服務器的連接,結果也是一樣)。 當我實際上無法檢測到條目是否存在而我的互聯網斷開了我的連接時,這導致了一系列下游問題。

因此,我決定嘗試:

USE hg19; 
SELECT *, count(*) AS results 
FROM (
  SELECT DISTINCT (name2), txStart, txEnd 
  FROM refGene 
  WHERE name2 LIKE 'TP53'
) a;

現在,如果結果不存在(如果未連接,則為空白),結果將為0。 但是,無論出於何種原因,現在無論如何它都只顯示一個條目(例如,如果我查詢TP53,它應該有兩個不同的條目->但是,它將給我結果:2,但只顯示其中一個)。 有沒有解決的辦法? 我仍然希望它顯示所有不同的結果。

COUNT()是適用於行組的聚合函數。 如果沒有GROUP BY子句,只有MySQL會接受這樣的語句,並且將在未聚合的列中返回任意值-如您所見,僅返回一行。

為了獲得理想的結果,您只需反轉邏輯並使用LEFT JOIN

SELECT 
    a.results,
    b.*
FROM
    (SELECT COUNT(*) results FROM refGene r1 WHERE a.name2 LIKE 'TP53') a
LEFT JOIN (
    SELECT
        *
    FROM
        refGene r2
    WHERE
        name2 LIKE 'TP53'
) b
ON
   a.result IS NOT NULL;

如果“主”查詢不返回任何行,則結果列中將為0(零),而“主”查詢的列中將為NULL值。

暫無
暫無

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

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