首页 > 解决方案 > 如何在 Mysql 中检索匹配和不匹配的记录?

问题描述

我正在尝试检索 mysql 中的匹配和不匹配记录。

center_wise_test_rates:

lab_id   category_name   test_id   test_name           rate
------   -------------   --------  ---------           ------
2        Cardiology       9        Blood Sug           1200
2        Cardiology      10       Total Cholesterol    1500
2        Cardiology      11       HDL                  1100
2        Cardiology      12       LDL                  750


test_list

test_id  category_name       test_name
-------  -------------       ---------
9        Cardiology          Blood Sug
10       Cardiology          Total Cholesterol
11       Cardiology          HDL
12       Cardiology          LDL
57       Cardiology          abc   

从基于 category_name 和 lab_id 的 center_wise_test_rates 和 test_list 表中,匹配的记录将得到但不匹配的记录,即没有得到测试名称“abc”。

我的查询:

SELECT cwtr.lab_id
      ,cwtr.category_name
      ,cwtr.test_id
      ,cwtr.test_name
      ,cwtr.rate
FROM `center_wise_test_rates` AS cwtr
LEFT OUTER JOIN test_list AS tl ON tl.category_name = (SELECT DISTINCT category_name
                                                       FROM center_wise_test_rates 
                                                       WHERE category_name='Cardiology')
                                AND tl.test_id = cwtr.test_id
WHERE cwtr.lab_id = '2'
AND cwtr.category_name = 'Cardiology'

输出:

lab_id  category_name  test_id  test_name        rate
------   ------------  -------- ---------        ----
2        Cardiology       9     Blood Sug        1200
2        Cardiology      10    Total Cholesterol 1500
2        Cardiology      11       HDL            1100
2        Cardiology      12       LDL            750

预期输出:

 lab_id  category_name  test_id   test_name          rate
 ------  -------------  --------  ---------          ----
  2      Cardiology       9       Blood Sug          1200
  2      Cardiology      10       Total Cholesterol  1500
  2      Cardiology      11       HDL                1100
  2      Cardiology      12       LDL                 750
  2      Cardiology      57       abc                 Null

提前致谢。

标签: mysql

解决方案


它将从 TABLE1 中选择条件匹配与否的所有值。

 SELECT coulmn1, column2 FROM TABLE1 LEFT JOIN TABLE2 ON TABLE1.ID= TABLE2.ID WHERE NAME = 'ABC'

推荐阅读