鍍金池/ 問答/數(shù)據(jù)庫/ 這段SQL報(bào)錯(cuò)

這段SQL報(bào)錯(cuò)

SELECT CASE WHEN (SELECT COUNT(*)

              FROM table_table2
              WHERE table_table2.jobname = '計(jì)算機(jī)') > 0

THEN (SELECT *

    FROM table_table2
    WHERE table_table2.jobname = '計(jì)算機(jī)') END

FROM table_table2
執(zhí)行這段SQL時(shí)報(bào)錯(cuò)

Operand should contain 1 column(s)

回答
編輯回答
夏木

你的sql語句的意思,我理解為如果 jobname 為“計(jì)算機(jī)”的數(shù)據(jù)存在的情況下,就顯示該表所有的字段信息。

那么,要是不存在的情況下,那么整條 sql 語句就you問題了,因?yàn)闆]有要顯示的字段信息。

而你出現(xiàn)的錯(cuò)誤提示,肯定是你的 when 的條件不成立。然后就報(bào)錯(cuò)。

2017年9月1日 08:59
編輯回答
舊言

先說一下報(bào)的錯(cuò)誤,case when語句中,返回結(jié)果集只能有一行一列。

sql的實(shí)現(xiàn)思路確認(rèn)有點(diǎn)亂,感覺像是其他開發(fā)語言的寫法,沒考慮到sql處理的是結(jié)果集。

2018年7月4日 21:21
編輯回答
薄荷綠

這sql寫的簡直慘不忍睹。。不就是想有記錄的時(shí)候展示詳情嗎?
SELECT * FROM table_table2 WHERE table_table2.jobname = '計(jì)算機(jī)';
為什么搞這么復(fù)雜。。。

2017年10月16日 23:22