2013-10-14 2 views
0

У меня есть две таблицыMYSQL новичок и подзапросы

T1  T2 
id  id 
name name 
t2_id 

И я хочу, чтобы получить все записи Т2, которые не связаны с T1, как я могу это сделать? Я попытался с подзапросов, но я не смог ...

SELECT * FROM T2 
WHERE T1.t2_id NOT IN 
(SELECT T2.id FROM T2) 

Код ошибки: 1054. Неизвестный столбец 'T1.t2_id' в 'IN/ALL/ЛЮБОГО подзапроса'

+0

Мне нужно получить все записи T2 – Goku

+0

@Goku Внимательно сравните свой запрос с тем, что вы хотите. – glglgl

+0

Пожалуйста, см. JOINs – Strawberry

ответ

3

Вы его назад:

SELECT * 
FROM T2 
WHERE id NOT IN (SELECT t2_id FROM T1) 

Это также может быть записана как внешнее соединение, и MySQL, как правило, работают лучше, таким образом, :

SELECT T2.* 
FROM T2 
LEFT JOIN T1 ON T1.t2_id = T2.id 
WHERE T1.id IS NULL 

Удостоверьтесь, что у вас есть указатель на T1.t2_id, чтобы это было хорошо.

1

Я хочу чтобы получить все записи T2, которые не связаны в T1, как я могу это сделать?

Те в T1 являются

SELECT T1.t2_id FROM T1 

и ссылка на T2, конечно, сделано через T2.id, так

SELECT * FROM T2 
WHERE T2.id NOT IN 
    (SELECT T1.t2_id FROM T1) 

, кажется, что вы хотите.

Если у вас есть близкий взгляд, SQL почти похож на повседневный язык. Около.

3

Вы почти там, но обратите внимание, что вы можете ссылаться только на столбцы из таблиц в предложении FROM в своем предложении WHERE. Таким образом, вы, вероятно, хотите сделать что-то вроде этого:

SELECT * 
FROM T2 
WHERE T2.id NOT IN 
(SELECT T1.t2_id FROM T1) 
Смежные вопросы