當前位置:成語大全網 - 書法字典 - 找到壹個java mysql查詢的想法

找到壹個java mysql查詢的想法

事實上,我沒有好主意。我甚至推薦妳使用樓上提到的方法。直接選擇*找出所有數據後,在service中用java處理數據更方便。

如果妳想用sql找出答案,我在這裏寫了這段話:

首先,因為是同壹個表,結果是根據不同的條件拼接在壹起的,所以我能想到的就是使用left join。我根據不同情況將數據分為以下幾部分:

A節:名稱節作為left join的主表,只有名稱;

b區:早餐區;

C段:不吃早餐;

d段:我吃了晚餐段;

e段:不吃晚飯;

f段:我吃了米飯段;

G區:禁止進食區。

除了A段,其他各段都是根據自己的條件。

挑選

姓名,

計數(*)計數,

總和(重量),

然後通過左連接依次按名稱將所有段連接在壹起,最終的sql語句如下:

挑選

壹個名字,

if null(b . count,0)吃早餐的次數,

if null(b . sum,0)?早餐的重量,

if null(c . count,0)不吃早餐的次數,

if null(c . sum,0)?沒有早餐的重量,

if null(d . count,0)吃晚餐的次數,

if null(d . sum,0)?晚餐的分量,

if null(e . count,0)不吃晚餐的次數,

if null(e . sum,0)?沒有晚餐的重量,

if null(f . count,0)的進食次數,

if null(f . sum,0)?這頓飯的重量,

if null(g . count,0)不吃東西的次數,

if null(g . sum,0)?不吃東西的重量。

(選擇不同的名稱

從T)左連接

(選擇

姓名,

計數(*)計數,

重量總和

從T

其中類型= 0且狀態= 0

按名稱分組)b ON a.name = b.name

左連接

(選擇

姓名,

計數(*)計數,

重量總和

從T

其中類型= 0且狀態= 1

按名稱分組)c ON a.name = c.name

左連接

(選擇

姓名,

計數(*)計數,

重量總和

從T

其中類型= 1,狀態= 0

按名稱分組)d ON a.name = d.name

左連接

(選擇

姓名,

計數(*)計數,

重量總和

從T

其中類型= 1且狀態= 1

按姓名分組)e ON a.name = e.name

左連接

(選擇

姓名,

計數(*)計數,

重量總和

從T

其中狀態= 0

按名稱分組)f ON a.name = f.name

左連接

(選擇

姓名,

計數(*)計數,

重量總和

從T

其中狀態= 1

按名稱分組)g ON a.name = g.name

測試表結構是:

(因為連接是通過name字段建立的,條件是type和status,所以建議使用這三個字段作為索引。)

測試表測試數據為:

運行結果如下: