【发布时间】:2018-08-25 11:47:17
【问题描述】:
我有两张表,其中一张引用了另一张表。出于测试目的,我创建了这两个表
DROP TABLE IF EXISTS `test1`;
CREATE TABLE `test1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`test2_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `test1_test2_id_fk` (`test2_id`),
CONSTRAINT `test1_test2_id_fk` FOREIGN KEY (`test2_id`) REFERENCES `test2` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
LOCK TABLES `test1` WRITE;
INSERT INTO `test1` VALUES (1,1);
UNLOCK TABLES;
DROP TABLE IF EXISTS `test2`;
CREATE TABLE `test2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`value` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
LOCK TABLES `test2` WRITE;
INSERT INTO `test2` VALUES (1,'group','Baustahl');
UNLOCK TABLES;
到目前为止一切都很好,但是当我现在执行这个查询时:
SELECT * FROM test1 t1 JOIN test2 t2 ON t2.id = t1.test2_id WHERE t2.name = 'group' AND t2.value = 0;
IMO 它应该产生一个空结果,因为我的数据库中的value 是Baustahl,我正在查询0。但是,Baustahl 结果会返回,如您在此处看到的那样
我似乎无法找到这种行为的原因,因为它是 def。不是我的期望。任何想法为什么会发生这种情况?
【问题讨论】:
-
你的期望是什么?..添加预期的结果
-
... 我做到了... 引用:“IMO 它应该产生一个空的结果,因为我的数据库中的值是 Baustahl 并且我正在查询 0”......也许阅读先发帖?
标签: mysql