我有4個表SQL查詢是否存在以及OR操作
users
| id |Username|
| 1 | John |
| 2 | Mike |
| 3 | Alex |
user_contacts
| user_id |contact_id|
| 1 | 2 |
| 1 | 3 |
| 2 | 3 |
contact_groups
| id | Group name |
| 1 | Group 1 |
| 2 | Group 2 |
| 3 | Group 3 |
user_contact_groups
| user_id |contact_group_id|
| 1 | 1 |
| 1 | 2 |
| 3 | 2 |
什麼ID喜歡做的事就是拉屬於聯絡組1和3的用戶1的聯繫人的用戶(在表:user_contacts) 。下面是代碼,但它返回查詢爲空
SELECT DISTINCT a.* from users as a
WHERE EXISTS (SELECT * FROM user_contacts as b
WHERE b.user_id = 1) OR
(a.id IN (select c.user_id
FROM user_contact_groups as c
WHERE c.contact_group_id IN (1,3)));
應該始終返回所有行從您的'users'表,作爲第一條件你的WHERE子句實際上是一個'1 = 1'。 – Perception
user_id變化。我應該用%d替換1。謝謝 – user1917451