我在MySQL中有两个表:t1和t2。结构是这样的:
t1.aa t2.az
t1.bb t2.zz
t1.cc t2.aa
t2.dz
现在,我需要得到类似的东西:
result: t1.aa = 'value', t2.dz = 'value';
但:
1) 第二个表 (T2) 可能只是空的
2)在我的查询"WHERE"语句中,如下所示:
WHERE t1.aa=t2.aa AND t2.zz=345
所以,如果第二个表真的是空的,我需要得到这样的东西:
result: t1.aa = 'value', t2.dz = null;
谢谢。
附言我们还有其他答案,例如当MySQL中的一个表为空时选择多个表,但我的问题出在"WHERE"语句中。
我的表格是:
表 t1
CREATE TABLE IF NOT EXISTS `t1` (
`aa` int(5) NOT NULL AUTO_INCREMENT,
`bb` varchar(56) NOT NULL,
`cc` varchar(56) NOT NULL,
PRIMARY KEY (`aa`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
表t1 数据
INSERT INTO `t1` (`aa`, `bb`, `cc`) VALUES
(1, 'varchar in bb', 'cc varchar');
表 t2
CREATE TABLE IF NOT EXISTS `t2` (
`az` int(5) NOT NULL AUTO_INCREMENT,
`zz` int(5) NOT NULL,
`aa` int(5) NOT NULL,
`dz` int(10) NOT NULL,
PRIMARY KEY (`az`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
表 t2 数据为空
我不是天才,但我读过mysql文档
http://dev.mysql.com/doc/#manual
使用加入(我没有测试它)你需要证明它。
SELECT * FROM t1 LEFT JOIN t2 ON t1.aa == t2.aa WHERE t2.zz = 345
Lea Tano,我们很接近。
正确的查询是:
SELECT * FROM t1 LEFT JOIN t2 ON t1.aa=t2.aa AND zz=345
如您所见,不需要"WHERE"语句。这个角色继承了"在...而且..."。
感谢大家的任何帮助。
还有莉亚·塔诺,主要是。