gpt4 book ai didi

mysql - SQL 案例 - 如果一个值等于某事然后做某事

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:28 25 4
gpt4 key购买 nike

这是我的 SQL 查询的一部分。

SELECT 

c.fullname AS Course,
gi.itemname AS Activity,
CONCAT(ROUND(gg.finalgrade,1) , '%') AS Grade,
cmc.completionstate,
gi.itemmodule,

concat('<a target="_new" href="localhost/moodle/mod/quiz/view.php?id=',cm.id,'">View this Activity</a>') AS 'Link'

我想在 gi.itemmodule = quiz 时显示上面的链接,而在 gi.itemmodule = scorm 时显示不同的链接(..moodle/mod/scorm..),等等......

我认为这需要一个 CASE 语句,但不确定如何去做。

最佳答案

case gi.itemmodule
when 'quiz'
then concat(<onelink>)
when 'scorm'
then concat(<oneotherlink>)
else concat(<defaultlink>)
end as 'Link'

你也可以在 concat 中做这种情况,如果只更改 concat 的一部分。

有点像

concat('<a target="_new" href="',
(case gi.itemmodule
when 'quiz'
then 'value of href'
when 'scorm'
then 'another value of href'
else 'defaultvalue of href'
end),
cm.id,
'">View this Activity</a>') as 'Link'

这将避免代码重复,但可能更难阅读......

根据给出的示例,您似乎可以这样做(但不确定)

concat('<a target="_new" href="localhost/moodle/mod/',gi.itemmodule, '/view.php?id=',cm.id,'">View this Activity</a>') AS 'Link'

或者如果某些项目模块对链接有用,但不是全部

concat('<a target="_new" href="localhost/moodle/mod/',
(case when gi.itemmodule in ('scorm', 'quiz', 'asdf')
then gi.itemmodule
else 'defaultValue'
end),
'/view.php?id=',
cm.id,
'">View this Activity</a>') AS 'Link'

关于mysql - SQL 案例 - 如果一个值等于某事然后做某事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21111232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com