2014-01-24 4 views
1

Я сейчас обрабатываю поля отдельно в MySQL-запросах, но хотел бы объединить целые записи.Объединить все записи в MySQL

Возможно ли это?

SELECT la.id, 
COALESCE((SELECT name FROM lookup_changed l0, 
      (SELECT MAX(id) id 
      FROM lookup_changed  
      WHERE lookup_id = 26 
      ) l1 
      WHERE l0.id = l1.id 
     ), la.name) name, 
COALESCE((SELECT msisdn FROM lookup_changed l0, 
      (SELECT MAX(id) id 
      FROM lookup_changed  
      WHERE lookup_id = 26 
      ) l1 
      WHERE l0.id = l1.id 
     ), la.msisdn) msisdn 
FROM lookup_added la 
WHERE la.id = 26 

@Alma Do - псевдо-SQL является:

SELECT la.id, 
MULTICOALESCE((SELECT <name, msisdn> FROM lookup_changed l0, 
       (SELECT MAX(id) id 
        FROM lookup_changed  
        WHERE lookup_id = 26 
       ) l1 
       WHERE l0.id = l1.id 
      ), <la.name, la.msisdn>) <name, msisdn> 
FROM lookup_added la 
WHERE la.id = 26 
+0

I не получил смысла. Можете ли вы предоставить псевдо-SQL? (То есть как это должно выглядеть) –

+0

@AlmaDo добавлен, спасибо. – fadedbee

ответ

0

С COALESCE() "возвращение [s] первый не NULL аргумент", это звучит, как вы хотите, чтобы извлечь «первый Некоммерческие -null результат из набора для запросов ":

-- syntax error 
SELECT COALESCE(
    SELECT a FROM ta, 
    SELECT b FROM tb 
); 

-- roughly equates to 
(SELECT a AS val FROM ta WHERE a IS NOT NULL ORDER BY a LIMIT 1) 
UNION 
(SELECT b AS val FROM tb WHERE b IS NOT NULL ORDER BY b LIMIT 1) 
ORDER BY val LIMIT 1 ; 

Комментарии:

  • Я добавил ORDER BY положение, в противном случае «первая строка» означает ничего
  • внутренние LIMIT 1 положений не являются обязательными (но позволяют раннюю обрезку подразделов результатов)
  • скобки вокруг подразделов запросов являются обязательными
Смежные вопросы