Мой запрос:SQL Помощь Inner JOIN LEFT JOIN
SELECT Pics.ID, Pics.ProfileID, Pics.Position, Rate.ID as RateID, Rate.Rating, Rate.ProfileID, Gender
FROM Pics
INNER JOIN Profiles ON Pics.ProfileID = Profiles.ID
LEFT JOIN Rate ON Pics.ID = Rate.PicID
WHERE Gender = 'female'
ORDER BY Pics.ID
И результаты:
ID ProfileID Position RateID Rating ProfileID Gender
23 24 1 59 9 42 female
24 24 2 33 8 32 female
23 24 1 53 3 40 female
26 24 4 31 8 32 female
30 25 4 30 8 32 female
24 24 2 58 4 42 female
Теперь я хочу сделать еще один запрос, который был бы: Если Rate.ProfileID = 32, удалить все строки, которые содержат тот же Pics.ID
так осталось:
ID ProfileID Position RateID Rating ProfileID Gender
23 24 1 59 9 42 female
23 24 1 53 3 40 female
, а также удалить все повторяющиеся Pics.ID так только один из указанных выше, поскольку они оба = 23 так осталось:
23 24 1 59 9 42 самок или 23 24 1 53 3 40 женских
Что вы PRIMARY KEY? – Strawberry
Вы что-то пробовали? Когда вы попытались решить вашу проблему до публикации здесь, какие проблемы вы столкнулись? – dfundako
rate.profileID находится слева. Поэтому он должен быть включен в соединение, поэтому исключение сохраняет ваши нулевые значения. поэтому ... 'LEFT JOIN Rate ON Pics.ID = Rate.PicID и Rate.ProfileID = 32', если вы делаете' LEFT JOIN Rate ON Pics.ID = Rate.PicID, где gender = 'female' и Rate.ProfileID = 32 'тогда вы в основном делаете левое соединение внутренним, поскольку вы устраняете нули, сгенерированные из левого соединения в предложении where. Null <> 32! – xQbert