mySQL查询将团队ID更改为团队名称并使其不为空

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mySQL查询将团队ID更改为团队名称并使其不为空相关的知识,希望对你有一定的参考价值。

我为一个名为“游戏”的足球联赛制作了一张结果表。此结果表显示时间和日期,主场/客场球队ID以及主场/客场得分。

我试图从中创建一个查询,显示“游戏”表中的所有信息,但将任何NULL分数显示为空白而不是NULL。我也试图用实际相应的团队名称替换团队ID。团队名称存储在名为“tname”的列下名为“teams”的表中。

继承人我的设定;

创建团队和游戏桌

CREATE TABLE teams(id int primary key auto_increment,tname char(32));
CREATE TABLE games(id int primary key auto_increment, date datetime,
               hteam int, ateam int, hscore tinyint,ascore tinyint);

在两个表中添加值

INSERT INTO teams VALUES
(1,'Team1'),(2,'Team2'),(3,'Team3'),(4,'Team4');

INSERT INTO games VALUES
(1,'2008-1-1 20:00:00',1,2,1,0),(2,'2008-1-1 20:00:00',3,4,0,2),
(3,'2008-1-8 20:00:00',1,3,1,1),(4,'2008-1-8 20:00:00',2,4,2,1);

此查询显示了我希望结果表的外观结构,但是我想将NULL更改为空白和团队ID,例如Team1 = 1到实际的团队名称

SELECT * FROM games;
答案

要将NULL更改为空字符串,可以使用COALESCE()函数,该函数返回第一个非null参数。或者,您可以使用IFNULL()函数执行相同的工作。

要返回团队名称,请根据相关ID加入两个表。您需要两次加入球队表,一个用于家庭,另一个用于离开。

试试这个:

SELECT id, `date`, ht.tname, at.tname, COALESCE(hscore, ''), COALESCE(ascore, '')
FROM games g
LEFT JOIN teams ht ON ht.id = g.hteam
LEFT JOIN teams at ON at.id = g.ateam

以上是关于mySQL查询将团队ID更改为团队名称并使其不为空的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 如果选择子查询中的计数为空,则更改为 0

在多个字段上连接 mysql 表

仅在其不为空的情况下更新 [重复]

将列更改为可为空的查询不起作用[重复]

如何在mysql中获取值不为null的列名

Oracle中查询某字段不为空的SQL语句怎么写