mysql右外连接where子句

enxuqcxy  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(284)

我有三张table: pd_tprofessional , pd_tpreference 以及 pd_tprofessional_preference . pd_tprofessional 以及 pd_tpreference 具有唯一id( fkprofessional 以及 fkpreference 分别)。 pd_tprofessional_preference 有3列: fkpreference , patientpreference_selected , fkprofessional 我要做的是编写一个查询,它将获得所有 pd_tpreference 然后回来 patientpreference_selected 根据if为1或0 fkprofessional 是13岁 pd_tprofessional_preference 有了这个 fkprofessional 存在。
到目前为止我得到的是:

SELECT patientpreference_selected, fkprofessional, pkpreference, preference_name 
FROM pd_tprofessional_preference 
     RIGHT OUTER JOIN pd_tpreference 
     ON pd_tpreference.pkpreference = pd_tprofessional_preference.fkpreference

这个问题给了我所有的答案 pd_tpreference 把他们和 pd_tprofessional_preference ,现在我要回去了 patientpreference_selected 如果该记录存在于 pd_tprofessional_preferencefkprofessional 是13岁 fkpreference . 我真的希望这有意义。

rdrgkggo

rdrgkggo1#

传统且易于阅读的方法是使用 Left Join . 你可以做一个左连接从 pd_tpreference 餐桌 pd_tprofessional_preference table。
在连接中 ON 条件,指定 fkprofessional = 13 .
你可以用 Coalesce() 函数来处理在 pd_tprofessional_preference table。
在多表查询中,建议使用别名以提高代码的清晰度并避免模棱两可的行为。
请尝试以下操作:

SELECT 
  pref_t.fkpreference, 
  pref_t.preference_name, 
  map_t.fkprofessional, 
  COALESCE(map_t.patientpreference_selected, 0) AS patientpreference_selected
FROM pd_tpreference AS pref_t
LEFT JOIN pd_tprofessional_preference AS map_t
  ON map_t.fkpreference = pref_t.fkpreference AND 
     map_t.fkprofessional = 13

相关问题