MySQL中的Left Join返回空值,而它们不应返回';不可能

MySQL中的Left Join返回空值,而它们不应返回';不可能,mysql,join,null,Mysql,Join,Null,所以我正在用MySQL写一个小的学校项目。总体思路是创建一个简单的网站,以html方块显示文本,其中有关文本的数据取自数据库(显示的文本和方块的背景色) 我现在的代码如下所示: 带正方形的表格: CREATE TABLE `display` ( `display_id` int(50) NOT NULL, `showcased_text` varchar(50) NOT NULL, `assigned_color` int(50) NOT NULL ) ENGINE=InnoDB D

所以我正在用MySQL写一个小的学校项目。总体思路是创建一个简单的网站,以html方块显示文本,其中有关文本的数据取自数据库(显示的文本和方块的背景色)

我现在的代码如下所示:

带正方形的表格:

CREATE TABLE `display` (
  `display_id` int(50) NOT NULL,
  `showcased_text` varchar(50) NOT NULL,
  `assigned_color` int(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
有颜色的桌子:

CREATE TABLE `kolory` (
  `color_id` int(50) NOT NULL,
  `color_name` varchar(50) NOT NULL,
  `color_code` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
还有一个代码在这两个表之间建立关系:

ALTER TABLE `display`
  ADD CONSTRAINT `display_ibfk_1` FOREIGN KEY (`assigned_color`) REFERENCES `colors` (`color_id`);
COMMIT;
到目前为止效果很好。。。 但当我尝试在PHPMyAdmin中“打印”一个表时,它只包含“显示”表中显示的文本和指定的颜色代码,所有颜色代码都返回为NULL

The code looks like that:
SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON display.assigned_color = colors.color_code
我也试着和演员们一起工作,就像这样:

SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON cast(display.assigned_color as VARCHAR(50)) = colors.color_code

但是MySQL返回一个语法错误。。。我做错了什么?

您试图加入
colors
表中的
color\u code
字段。相反,它应该位于
colors
表中的
color\u id
字段上

SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON display.assigned_color = colors.color_id

在查询1中,您使用了错误的条件加入

SELECT display.showcased_text, colors.color_code
FROM display
  LEFT JOIN colors ON display.assigned_color = colors.color_id

在查询2中,不明白为什么要使用强制转换联接条件

您在错误的字段上联接
display.assigned\u color=colors.color\u code
应该是
display.assigned\u color=colors.color\u id
,因为外键引用来自
display.assigned\u color
colors.color\u id
,下次请参阅:哇,谢谢!:我不敢相信这是如此明显。。。我猜是初学者的错误。再次感谢,非常感谢!