mysql中的left join返回空值,但它们不应该是空值

du7egjpx  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(425)

所以我正在用mysql写一个小的学校项目。一般的想法是有一个简单的网站,在html方块中显示文本,其中关于它们的数据来自数据库(显示的文本和方块的背景色)。
我现在的代码如下所示:
带正方形的table:

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;

有颜色的table:

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中“打印”一个只包含“display”表中显示的文本和指定的颜色代码的表时,所有颜色代码都返回为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返回一个语法错误。。。我做错什么了?

d5vmydt9

d5vmydt91#

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

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

在查询2中,不明白为什么要使用cast-in-join条件

von4xj4u

von4xj4u2#

你想加入 color_code 字段输入 colors table。相反,它应该打开 color_id 字段输入 colors table。

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

相关问题