mysql选择left中的所有行,并在右表中设置null

时间:2016-12-14 06:08:42

标签: mysql

我在MySql数据库中有两个表,表是:

enter image description here

上面一个表格为jenis_pohon,下面一个表格为jtt

如何选择jenis_pohon中的所有行,并将其与条件jtt的{​​{1}}一起加入

我尝试了以下查询:

jtt.tahun='2016' AND jtt.koperasi_id='4'

但没有运气。

basicaly我希望返回6行(这6行来自SELECT * FROM `jenis_pohon` LEFT JOIN jtt ON jenis_pohon.jenis_pohon_id=jtt.jenis_pohon_id WHERE jtt.tahun='2016' AND jtt.koperasi_id='4' )。

3 个答案:

答案 0 :(得分:0)

尝试使用以下查询。

SELECT
    *
FROM
    `jenis_pohon`
LEFT JOIN jtt ON jenis_pohon.jenis_pohon_id = jtt.jenis_pohon_id
AND jtt.tahun = '2016'
AND jtt.koperasi_id = '4';

LIVE DEMO

<强>输出

enter image description here

答案 1 :(得分:0)

检查一下。点击Demo

表jtt条件为jtt.tahun ='2016'和jtt.koperasi_id ='4'   它只返回3条记录,因为jtt.koperasi_id ='4'ave只有3条记录进入tabel'jtt'

 SELECT * FROM `jenis_pohon` 
LEFT JOIN jtt ON jenis_pohon.jenis_pohon_id=jtt.jenis_pohon_id 
WHERE jtt.tahun='2016' AND jtt.koperasi_id='4';

表格jtt,条件为onlt jtt.tahun ='2016'

  SELECT distinct * FROM `jenis_pohon` 
  LEFT JOIN jtt ON jenis_pohon.jenis_pohon_id=jtt.jenis_pohon_id 
   WHERE jtt.tahun='2016'

答案 2 :(得分:0)

我已经创建了你的表并进行了测试,它确实有效。 使用此查询:

SELECT * FROM jenis_pohon 
LEFT JOIN jtt ON (jenis_pohon.jenis_pohon_id = jtt.jenis_pohon_id AND jtt.tahun = '2016' AND jtt.koperasi_id = '4')

请注意,在连接括号内使用AND会使查询比使用WHERE更快。

结果是:

enter image description here

您可以将它排序为:

SELECT * FROM jenis_pohon 
LEFT JOIN jtt ON (jenis_pohon.jenis_pohon_id = jtt.jenis_pohon_id AND jtt.tahun = '2016' AND jtt.koperasi_id = '4') 
ORDER BY jenis_pohon.jenis_pohon_id