2017-10-10 57 views
0

这是我的查询以从用户表中获取过滤器数据,其中类别将从另一个表中获取。在MYSQL中使用和运算符的结果为空

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

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

任何人都可以帮忙吗?

+0

显示你的表和表结构 –

+0

两者的几个记录? – matiit

+0

你的'country_id'和'skill_id'是'varchar'类型或'int'类型? –

回答

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 
       ) 
+0

我认为mySql可以使用或不使用引号来处理它。 – Lamar

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 
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' 
       ) 
相关问题