I have a simple structure of 2 tables: contacts and group_contacts. A contact can belong to one, many or no groups. I'm trying to write a select statement that will give me all the contacts that don't belong to group_id '123'. The negative, don't, has me confused. CREATE TABLE IF NOT EXISTS `contacts` ( `contact_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL) CREATE TABLE IF NOT EXISTS `group_contacts` ( `contact_id` bigint(20) unsigned NOT NULL, `group_id` int(11) unsigned NOT NULL) thanks
答案 0 :(得分:4)
select a.contact_id from contacts a, group_contacts b where b.group_id<>123 and b.contact_id=a.contact_id;
答案 1 :(得分:3)
您必须通过两个宏步骤继续执行此操作:
where
子句中,应加载123的group_id。答案 2 :(得分:2)
select * from contacts as ct
left join group_contacts as gc on ct.contact_id=gc.contact_id
where gc.group_id!=123
答案 3 :(得分:1)
试试这个
select * from contacts a left join group_contacts b
on a.contact_id = b.contact_id
where b.group_id !=123