【问题标题】:mysql select all rows in left and let null in right tablemysql选择左侧的所有行并在右侧表中设置null
【发布时间】:2017-04-29 09:18:13
【问题描述】:

MySql 数据库中有两张表,分别是:

上一张是jenis_pohon,下一张是jtt

如何选择jenis_pohon 中的所有行并将其与jtt 连接,条件为jtt.tahun='2016' AND jtt.koperasi_id='4'

我尝试了以下查询:

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'

但没有运气。

基本上我想返回 6 行(这 6 行来自jenis_pohon)。

【问题讨论】:

  • 您的预期输出是什么?
  • this 有帮助吗?
  • @TerryLi awesomeee...正是我要找的。非常感谢。

标签: mysql


【解决方案1】:

我已经创建了您的表格并对其进行了测试,它可以正常工作。 使用这个查询:

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 更快。

结果是:

你可以这样排序:

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 

【讨论】:

  • 是的,谢谢,我已经使用与您类似的查询解决了它。
  • 很高兴能为您提供帮助。
【解决方案2】:

检查这个。在这里查看Demo

表 jtt 条件为 jtt.tahun='2016' AND jtt.koperasi_id='4' 它仅返回 3 条记录,因为 jtt.koperasi_id='4' 仅将 3 条记录放入表“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';

O 表 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'

【讨论】:

    【解决方案3】:

    尝试使用下面的查询。

    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

    输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-27
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多