如何根据sql中的某些编码获取记录

时间:2018-01-12 13:22:31

标签: mysql sql

我需要从两个表

获取一些条件的记录
labels_pred = [1, 1, 0, 0, 2, 2]

所有事情都完美无缺,除了:

SELECT `tbui`.`user_id`,    `tbui`.`first_name`,`tbui`.`last_name`,`tbui`.`education_level`,`tbui`.`sex`,`tbui`.`country_of_origin`,`tbui`.`city`,`tbui`.`state`,`tbui`.`country`,`tbui`.`occupation`,`tbui`.`about`,TIMESTAMPDIFF(YEAR,`tbui`.`age`,CURDATE()) as age
FROM `tb_preference_dropdown` as `tbpda`
     RIGHT JOIN `tb_user_answers` as `tbua` ON `tbpda`.`question_id` = `tbua`.`question_id`
     RIGHT JOIN `tb_preference_questions` as `tbpa` ON `tbpa`.`user_id` = `tbpda`.`user_id`
     RIGHT JOIN `tb_user_info` as `tbui` ON `tbui`.`user_id` = `tbua`.`user_id`
WHERE `tbpda`.`user_id` = 113 
     AND TIMESTAMPDIFF(YEAR,`tbui`.`age`,CURDATE()) >=`tbpa`.`min_age_required` AND TIMESTAMPDIFF(YEAR,`tbui`.`age`,CURDATE()) <= `tbpa`.`max_age_required`
     AND `tbui`.`country_of_origin` = `tbpa`.`country_of_origin` 
     AND `tbua`.`user_id` != 113
     AND `tbui`.`sex` != 'Female'
     HAVING SUM(IF(tbpda.question_id = 1,IF(tbpda.answer_id !=0,IF(tbua.question_id =tbpda.question_id AND `tbua`.`answer_id` = tbpda.answer_id,tbua.user_id,''),true),'')) > 0

我收到的记录甚至与上述条件不符

1 个答案:

答案 0 :(得分:0)

您缺少 GROUP BY 子句,请重新编写查询