mysql左连接

时间:2012-04-03 11:25:02

标签: mysql

我有两个表一是索引,另一个是价格结构,如

table: index
columns: trandate, indexcode

table: price
Columns: truncate, symbol, price

我想知道缺少的价格。为此,我发出查询:

select i.trandate,i.indexcode,p.trandate,p.price 
  from index i 
  left join price p on i.trandate = p.trandate 
 where p.symbol='ABC' and indexcode="New"

即使价格表中缺少各种价格,上述查询也不会显示空日期。我理解的唯一原因是索引表没有符号字段,这就是原因...但是根据理论,如果你想要显示一个表的所有行而只显示另一个表的匹配值,那么使用左或右连接查询...请有人帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果你这样做

where p.symbol='ABC' and indexcode="New"

你只能获得符合的命中率。所以他们都必须有一个'ABC'符号。现在我不确定为什么你希望你的NULL值存在,如果你这样做,但我认为你的意思是这个?

 where (p.symbol='ABC' OR p.symbol IS NULL) and indexcode="New"

答案 1 :(得分:1)

您必须将left join ed表的条件移至left join ON部分:

select i.trandate,i.indexcode,p.trandate,p.price 
  from index i 
  left join price p on i.trandate = p.trandate and p.symbol='ABC'
 where indexcode="New"