2014-10-26 3 views
0

Ниже приведены таблицы t1 и t2, из которых я хочу сгенерировать таблицу вывода. Моя борьба состояла в том, чтобы не включать в выход строки, где y1 - NULL.Как исключить строки NULL из результата объединения

+--------------+ +--------------+ 
|  t1  | |  t2  | 
+--------------+ +--------------+ 
| x0 | x1 | x2 | | x0 | y1 |  
+--------------+ +--------------+ 
| a | 10 | a | | a | haha | 
| b | 11 |NULL| | b | NULL | 
| c | 12 | c | | c | foo | 
| d | 13 |NULL| | d | NULL | 
+--------------+ + -----+-------+ 

+--------------+ 
| output | 
+--------------+ 
| x0 | y1 | 
+--------------+ 
| a | haha | 
| c | foo | 
+--------------+ 

Я пробовал:

SELECT t1.x2, t2.y1 
FROM t1 
LEFT JOIN t2 ON t1.x0 = t2.x0 

также: В некоторых случаях мои строки не говорят NULL, но только пустые ячейки.

+4

Вы уже в основном есть ответ в тексте вопроса. Вам не нужны строки «где y1 - NULL», поэтому 'where y1 NOT NULL'. –

+0

Вероятно 'WHERE t1.x2 НЕ НУЛЛ И t2.y1 НЕ НУЛЛ' – BentCoder

ответ

1

Понадобится:

SELECT t1.x2, t2.y1 
FROM t1 
LEFT JOIN t2 ON t1.x0 = t2.x0 
WHERE y1 IS NOT NULL AND y1 <> '' 
+0

Спасибо. Я обнаружил, что моя таблица действительно не говорит «NULL». У меня просто пустая ячейка. Как это перевести в предложение WHERE? Потому что, когда я его пробовал, все строки все еще извлекались. – oaklander114

+0

@ oaklander114 Я обновил свой ответ на работу как для NULL, так и для пустых строк. Можете ли вы обновить свой вопрос, чтобы отразить необходимость также проверки пустых строк? – trnelson

+0

'WHERE (t1.x2 НЕ NULL ИЛИ t1.x2 <> '') И (t2.y1 НЕ НЕТ ИЛИ t2.y1 <> '')' – BentCoder

0

Эта:

SELECT 
t1.*, 
t2.* 
FROM t1, t2 
WHERE 
(t1.x2 IS NOT NULL AND t1.x2 <> '') AND (t2.y1 IS NOT NULL AND t2.y1 <> '') 

Даст вам:

'1', 'a', '10', 'a', '1', 'a', 'haha' 
'1', 'a', '10', 'a', '4', 'd', 'foo' 
Смежные вопросы