我在MySQL中有两个表:t1和t2。 结构是这样的:
t1.aa t2.az
t1.bb t2.zz
t1.cc t2.aa
t2.dz
现在,我需要得到类似的东西:
result: t1.aa = 'value', t2.dz = 'value';
BUT:
1)第二个表(t2)可能只是空的
2)在我的查询" WHERE"声明如下:
WHERE t1.aa=t2.aa AND t2.zz=345
所以,如果第二个表真的是空的,我需要得到这样的东西:
result: t1.aa = 'value', t2.dz = null;
感谢。
P.S。我们还有其他答案,例如Select multiple tables when one table is empty in 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数据为空
答案 0 :(得分:2)
我不是天才,但我读了mysql documentacion
http://dev.mysql.com/doc/#manual
使用JOIN(我没有测试它)你需要证明它。
SELECT * FROM t1 LEFT JOIN t2 ON t1.aa == t2.aa WHERE t2.zz = 345
答案 1 :(得分:0)
Lea Tano,我们很接近。
正确的查询是:
SELECT * FROM t1 LEFT JOIN t2 ON t1.aa=t2.aa AND zz=345
正如您所看到的,没有必要在" WHERE"声明。此角色由" ON ... AND ..."。
继承感谢所有人的帮助。
Lea Tano,主要是。