【问题标题】:mySQL query that changes team id to team name and makes not null blank将团队 ID 更改为团队名称且不为空的 mySQL 查询
【发布时间】:2018-06-05 20:52:45
【问题描述】:

我为一个名为“比赛”的足球联赛制作了一个结果表。此结果表显示时间和日期、主/客队 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;

【问题讨论】:

  • 提示:JOINCOALESCE()

标签: mysql sql database null


【解决方案1】:

要将NULL 更改为空字符串,您可以使用COALESCE() 函数,该函数返回第一个非空参数。或者,您可以使用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

【讨论】:

  • 您是否尝试过我答案的最新更新?我忘了在以前的更新中添加客队。现在再试一次。
  • 工作得很好!非常感谢!
猜你喜欢
  • 2014-11-12
  • 2017-08-15
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多