如何从表中获取另一个表中未提及的行

时间:2013-05-26 23:55:26

标签: mysql sql

我有2个表格,结构如下:

CREATE TABLE users(
  id bigint not null auto_increment,
  name varchar(255) default '',
  primary key(id)
);

CREATE TABLE user_links(
  user_id bigint,
  job_id bigint
);

因此用户链接到作业(此问题不需要jobs表格结构)

我需要使用一个查询一次所有未链接到任何作业的用户

例如,如果我有包含此类数据的表:

users:
id | name
1  | james
2  | fred

user_links:
user_id | job_id
1       | 5
1       | 6

然后我需要这样的结果行:

id | name
2  | fred

2 个答案:

答案 0 :(得分:3)

...假设user_links中没有NULL user_id:

SELECT *
FROM users
LEFT OUTER JOIN user_links ON users.id = user_links.user_id
WHERE user_links.user_id IS NULL

答案 1 :(得分:0)

SELECT *
  FROM users
 WHERE id NOT IN (SELECT user_id
                    FROM user_links)