SELECT pc. * , ssc. * , IF( ssc.category_id = pc.ID, '1', '0' ) AS checked
FROM property_categories pc
LEFT JOIN su_selected_categories ssc ON ssc.su_property_settings_id = 9
我正在尝试执行查找所有类别的选择查询,然后查看其中一个类别是否在另一个表中,如果将其标记为“已检查”
在这种情况下,我需要留下 3 行(有 3 个类别),其中 2 行应该在选中的列中为“1”,其余为“0”。
此查询返回重复的行,当我尝试按 pc.ID 分组时,它错过了正确的行之一。
我哪里错了?
----------------------
| id | category_name |
----------------------
| 1 | category1 |
----------------------
| 2 | category2 |
----------------------
| 3 | category3 |
----------------------
---------------------------------------------
| id | su_property_settings_id | category_id |
---------------------------------------------
| 1 | 1 | 2 |
----------------------------------------------
| 2 | 9 | 2 |
----------------------------------------------
| 3 | 9 | 1 |
----------------------------------------------
...more
更新*
我通过 pc.ID 分组得到什么
ID | category_name | ID | su_property_settings_id | category_id | checked
--------------------------------------------------------------------------
1 | cat1 | 11 | 9 | 2 | 0
2 | cat2 | 11 | 9 | 2 | 1
3 | cat3 | 11 | 9 | 2 | 0
我想要的是
ID | category_name | ID | su_property_settings_id | category_id | checked
--------------------------------------------------------------------------
1 | cat1 | 11 | 9 | 2 | 1
2 | cat2 | 11 | 9 | 2 | 1
3 | cat3 | 11 | 9 | 2 | 0