gpt4 book ai didi

mysql if/else 场景

转载 作者:行者123 更新时间:2023-11-29 03:46:08 27 4
gpt4 key购买 nike

好的,这是一个有趣的。我有 2 个表:tbl_notes、tbl_notes_categories

简单地说,tbl_notes 有一个 categoryid,我将 2 个表与该 ID 相关联。所以,没什么太复杂的。

我强制用户从下拉输入中选择一个类别,如果他们不选择某些内容,则阻止他们提交。

但是,我想改变这一点,主要是为了学习 JOIN 以及我可以使用它们走多远。

Sooooooo,我不会强制用户选择类别,相反,我会在 tbl_notes 中将 categoryid 默认为零。 (大多数用户会选择一个类别,但这是针对其他情况)

在查询中,我被锁定为仅显示具有 tbl_notes_categories 表中存在的 categoryid 的注释。但是,如果 categoryid 未被识别或等于零,我想有一个条件,然后指定另一个字符串。如“--未分配--”,或“--类别不存在--”

这是我的原始查询:

SELECT n.notesubject, c.categoryname 
FROM `tbl_notes` n, `tbl_notes_categories` c
WHERE n.categoryid = c.categoryid

这不会让我看到没有 categoryid 的笔记,所以我拉了这个:

SELECT n.notesubject, c.categoryname
FROM `tbl_notes` n
LEFT JOIN `tbl_notes_categories` c ON n.categoryid = c.categoryid

这会有所帮助,但如果类别表中缺少类别记录,我就会陷入显示替代文本的“条件”。

最佳答案

在 MySQL 中你可以使用 IFNULL :

SELECT
n.notesubject,
IFNULL(c.categoryname, 'Unknown') AS categoryname
FROM tbl_notes AS n
LEFT JOIN tbl_notes_categories AS c
ON n.categoryid = c.categoryid

如果未找到该类别,这将起作用,但如果类别 ID 为零(假设您的类别表中没有匹配的行),它也将起作用,因为那样也找不到。如果出于某种原因您确实想要在类别表中使用 id 零的行,那么您可以将其名称设置为“未知”。

请注意 IFNULL 是 MySQL 特定的。 COALESCE 函数也将起作用,并得到更多数据库的支持。

MySQL中一般的IF/ELSE语句可以使用IF或者对于更通用的解决方案,使用 CASE 表达式:CASE WHEN condition THEN expr1 ELSE expr2 END

关于mysql if/else 场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053655/

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