当第二个为空时,如何在一个查询中选择两个表(更难,而不是排序任务)


How to select two tables in one query when second is empty (harder, not order task)

我在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"语句。这个角色继承了"在...而且..."。

感谢大家的任何帮助。

还有莉亚·塔诺,主要是。