Mysql:如何编写select不在另一个表中的id

时间:2010-11-29 06:26:14

标签: mysql

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

4 个答案:

答案 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)

您必须通过两个宏步骤继续执行此操作:

  1. 首先,您需要在联系人和group_contacts表之间留下外部联接,以便选择在group_contacts表中执行和不具有任何相关关系的所有联系人
  2. 然后在group_contacts的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