开发者

Mysql: How do I write select where ids are not in another table

I have a simple structure of 2 tables:  contacts and group_contacts.

A 开发者_C百科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


select a.contact_id from contacts a, group_contacts b where b.group_id<>123 and b.contact_id=a.contact_id;


You would have to proceed this in two macro-steps:

  1. First you would need to left outer join between contacts and group_contacts table so that all contacts that do and don't have any relevant relation in group_contacts table is selected
  2. Then in the where clause of group_contacts group_id of 123 should be loaded.


select * from contacts as ct 
left join group_contacts as gc on ct.contact_id=gc.contact_id
where gc.group_id!=123


try this

select * from contacts a left join  group_contacts b
on a.contact_id = b.contact_id
where  b.group_id !=123
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜