2015-01-26 3 views
0

У меня есть таблица mysql со столбцами: customer, dateOrder. Один клиент может иметь заказы в несколько дат. Я хочу добавить новый столбец с самым далеким датом для каждого клиента. До сих пор я попытался это:столбец mysql update table с несколькими значениями из одной таблицы

UPDATE mytable 
    SET MINDATE = (SELECT min(DATEORDER) 
        FROM (SELECT * 
          FROM mytable 
          GROUP 
           BY CUSTOMER 
         ) tblTmp 
       ) 

, где tblTmp временной таблицы, проблема в том, что она приносит ту же дату для всех моих клиентов (самая дальняя дата в таблице). Есть идеи?

+0

Если вы хотите, рассмотрит следующую этой простой двухступенчатого курс действий: 1. Если вы еще не сделали этого, обеспечить надлежащее DDLS (и/или sqlfiddle), чтобы мы могли легче воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый набор результатов, соответствующий информации, представленной на шаге 1. - Совет должен начинаться с SELECT, который возвращает желаемый результат, а затем наращивает до UPDATE – Strawberry

ответ

1

Используйте JOIN, чтобы соответствовать исходной таблице с подзапросом:

UPDATE mytable AS t1 
JOIN (SELECT customer, MIN(dateorder) AS mindate 
     FROM mytable 
     GROUP BY customer) AS t2 ON t1.customer = t2.customer 
SET t1.mindate = t2.mindate 
+0

спасибо! работал как шарм! Я совершенно новый с базами данных, и я избегал Join :) – bluesony

+0

Embrace the JOIN! это фундаментальная операция в реляционных базах данных. – Barmar

Смежные вопросы