MySQL中的Left Join返回空值,而它们不应返回';不可能
所以我正在用MySQL写一个小的学校项目。总体思路是创建一个简单的网站,以html方块显示文本,其中有关文本的数据取自数据库(显示的文本和方块的背景色) 我现在的代码如下所示: 带正方形的表格: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
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
,下次请参阅:哇,谢谢!:我不敢相信这是如此明显。。。我猜是初学者的错误。再次感谢,非常感谢!