2017-10-10 54 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' 
       ) 
相關問題