我面臨一個問題,我似乎無法找到任何地方的解決方案。我在mySQL中有一個表格,內容如下:如何在mySQL中選擇無空的最後一列
RoleDuty1
RoleDuty2
RoleDuty3
RoleDuty4
RoleDuty5
RoleDuty6
RoleDuty7
此表只有一行或一條記錄。我想看看錶中最後一列是非NULL?這意味着我想動態獲取列名RoleDuty7
作爲mySQL的答案,因爲所有列的內部都有一些除Null以外的值。
任何人有任何想法我該怎麼做?
我面臨一個問題,我似乎無法找到任何地方的解決方案。我在mySQL中有一個表格,內容如下:如何在mySQL中選擇無空的最後一列
RoleDuty1
RoleDuty2
RoleDuty3
RoleDuty4
RoleDuty5
RoleDuty6
RoleDuty7
此表只有一行或一條記錄。我想看看錶中最後一列是非NULL?這意味着我想動態獲取列名RoleDuty7
作爲mySQL的答案,因爲所有列的內部都有一些除Null以外的值。
任何人有任何想法我該怎麼做?
我認爲你必須使用COALESCE與一羣CASE語句,就像這樣:
SELECT COALESCE(rd1, rd2, rd3, rd4, rd5, rd6, rd7)
FROM
(SELECT
CASE WHEN roleduty1 IS NOT NULL THEN 'roleduty1' ELSE NULL END AS rd1,
CASE WHEN roleduty2 IS NOT NULL THEN 'roleduty2' ELSE NULL END AS rd2,
....
FROM t) sub
SELECT (
CASE FirstNullColumn
WHEN 'RoleDuty1' THEN 'None'
WHEN 'RoleDuty2' THEN 'RoleDuty1'
WHEN 'RoleDuty3' THEN 'RoleDuty2'
WHEN 'RoleDuty4' THEN 'RoleDuty3'
WHEN 'RoleDuty5' THEN 'RoleDuty4'
WHEN 'RoleDuty6' THEN 'RoleDuty5'
WHEN 'RoleDuty7' THEN 'RoleDuty6'
ELSE 'RoleDuty7'
END
) AS LastNonNullColumn
FROM (
SELECT (
CASE
WHEN RoleDuty1 IS NULL THEN 'RoleDuty1'
WHEN RoleDuty2 IS NULL THEN 'RoleDuty2'
WHEN RoleDuty3 IS NULL THEN 'RoleDuty3'
WHEN RoleDuty4 IS NULL THEN 'RoleDuty4'
WHEN RoleDuty5 IS NULL THEN 'RoleDuty5'
WHEN RoleDuty6 IS NULL THEN 'RoleDuty6'
WHEN RoleDuty7 IS NULL THEN 'RoleDuty7'
ELSE 'None'
END
) AS FirstNullColumn
FROM MyTable
)
你應該而是改變你的餐桌設計。 –