使用时的空结果和MYSQL IN中的运算符

时间:2017-10-10 07:47:03

标签: php mysql

这是我从用户表中获取过滤器数据的查询,其中类别将从另一个表中获取。

SELECT * FROM jobfia_users 
WHERE country_id='4' 
  and user_id IN (SELECT worker_id 
                  FROM jobfia_worker_skills 
                  WHERE skill_id = '42'
                 )

这不会给出任何错误,但也不会返回任何行。 虽然使用此过滤器的表格中有很多记录。

任何人都可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

除了INT ID周围的引号外,您的查询将更好地表达如下:

SELECT u.* 
FROM jobfia_users  u 
INNER JOIN jobfia_worker_skills ws 
        ON ws.worker_id=u.user_id AND ws.skill_id = 42
WHERE u.country_id=4

答案 1 :(得分:0)

如果您的country_idskill_idint类型,请移除值'

SELECT * FROM jobfia_users 
WHERE country_id=4
  and user_id IN (SELECT worker_id 
                  FROM jobfia_worker_skills 
                  WHERE skill_id = 42
                 )

答案 2 :(得分:0)

使用和不使用''测试您的代码它的工作原理。确保您有数据并且没有拼错一些列名。 也许你碰到了一些列名。尝试使用以下语法:

`table_name`.`collumn_name`

SELECT * FROM `jobfia_users` 
WHERE `jobfia_users`.`country_id`='4' 
  and `jobfia_users`.`user_id` IN (SELECT `jobfia_worker_skills`.`worker_id` 
                  FROM `jobfia_worker_skills` 
                  WHERE `jobfia_worker_skills`.`skill_id` = '42'
                 )