mysql - 在 MySQL 中使用 IF 语句

标签 mysql sql if-statement

我有下面的 SQL 语句。我想要做的是包括一个 IF 语句来涵盖其中一列返回 0 或空白结果的可能性,没有 0 ID。在这种情况下,我试图涵盖 magez_cfv_nations 结果可能返回零或空白结果的可能性。

SELECT c.clan_name, n.nation_name, 
    CONCAT(r.rarity_shorthand, " - ", r.rarity_name) AS rarity_text, 
    t.trigger_name, s.skill_name
 FROM `magez_cfv_cards` AS cards
 JOIN `magez_cfv_clans` c ON cards.clan_id = c.clan_id
 JOIN `magez_cfv_nations` n ON cards.nation_id = n.nation_id
 JOIN `magez_cfv_rarity` r ON cards.rarity_id = r.rarity_id
 JOIN `magez_cfv_trigger` t ON cards.trigger_id = t.trigger_id
 JOIN `magez_cfv_skills` s ON cards.skill_id = s.skill_id

最佳答案

你需要一个 LEFT JOIN

The LEFT JOIN keyword returns all rows from the left table (table_name1), even if there are no matches in the right table

试试这个

SELECT c.clan_name, n.nation_name, 
    CONCAT(r.rarity_shorthand, " - ", r.rarity_name) AS rarity_text, 
    t.trigger_name, s.skill_name
 FROM `magez_cfv_cards` AS cards
 JOIN `magez_cfv_clans` c ON cards.clan_id = c.clan_id
 LEFT JOIN `magez_cfv_nations` n ON cards.nation_id = n.nation_id
 JOIN `magez_cfv_rarity` r ON cards.rarity_id = r.rarity_id
 JOIN `magez_cfv_trigger` t ON cards.trigger_id = t.trigger_id
 JOIN `magez_cfv_skills` s ON cards.skill_id = s.skill_id

关于mysql - 在 MySQL 中使用 IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381367/

相关文章:

mysql - 同一个表上的多个连接在一个查询中计数

MYSQL子查询更新后返回多于1行触发器

mysql - 从 MS Access 导入数据

MySQL INSERT INTO 语句

mysql - 如果我们在列中插入 `NOW()`,则 sql 表的列的数据类型应该是什么

mysql - 查询以根据另一列中的值递增值

sqlite3 准备、绑定(bind)和重置语句

javascript - Typescript - 如果 map 内有条件

python - 为什么我的 python 脚本在 if __name__==__main__ 运行时继续运行?

php - foreach 循环中的 codeigniter 查询将返回单个数组