簡體   English   中英

使用多個子查詢的字段列表中的 SQL 錯誤未知列

[英]SQL error Unknown column in field list using multiple subquery

我正在嘗試根據列打印文本。 我的想法是將每個職業的所有計數結合起來,並用一個案例來展示它。 但我不確定這段代碼有什么問題。 由於 sCount 不在字段列表中,因此出現錯誤。 任何幫助表示贊賞。

SELECT  CASE

        WHEN Occupation = "doctor" THEN
        CONCAT("There are a total of ", dCount, " " , Occupation, "s.")
        
        WHEN Occupation = "singer" THEN
        CONCAT("There are a total of ", sCount, " " , Occupation, "s.")
        
        END
FROM (
    SELECT * FROM (
        SELECT COUNT(Occupation) AS dCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Doctor'
    UNION
        SELECT COUNT(Occupation) AS sCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Singer'
    ) AS s
) AS m;

// this didnt work either
SELECT  CASE

        WHEN Occupation = "doctor" THEN
        CONCAT("There are a total of ", dCount, " " , Occupation, "s.")
        
        WHEN Occupation = "singer" THEN
        CONCAT("There are a total of ", sCount, " " , Occupation, "s.")
        
        END
FROM (
    SELECT COUNT(Occupation) AS dCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Doctor'
    UNION
    SELECT COUNT(Occupation) AS sCount, Lower(Occupation) AS Occupation FROM OCCUPATIONS WHERE Occupation = 'Singer'
) AS m;

你在嘗試這樣的事情嗎:

CREATE TABLE OCCUPATIONS  (
  Occupation varchar(100) );

INSERT INTO OCCUPATIONS  VALUES ('doctor'),('doctor'),
                                ('singer'),('singer'),
                                ('doctor'),('doctor'),
                                ('singer'),('singer'),
                                ('doctor'),('singer'),
                                ('singer'),('singer');




SELECT  CASE
        WHEN Occupation = "doctor" THEN
        CONCAT("There are a total of ", tbl.dCount, " " , Occupation, "s.") 
        WHEN Occupation = "singer" THEN
        CONCAT("There are a total of ", tbl.sCount, " " , Occupation, "s.")        
        END as total_count
FROM (          
SELECT COUNT(Occupation) AS dCount,null as sCount, Lower(Occupation) AS Occupation 
FROM OCCUPATIONS 
WHERE Occupation = 'doctor'
group by Occupation 
union 
SELECT null as tst, COUNT(Occupation) AS sCount, Lower(Occupation) AS Occupation 
FROM OCCUPATIONS 
WHERE Occupation = 'singer'
group by Occupation 
      )
as tbl ;

基於我的演示的結果將是:

總數

總共有5名醫生。

共有7位歌手。

演示: https : //www.db-fiddle.com/f/pB6b5xrgPKCivFWcpQHsyE/28

暫無
暫無

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

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