2014-11-19 3 views
-2

Я пытаюсь выполнить запрос в моей базе данных (MySQL).Выберите таблицу и замените столбец по значению из другой таблицы

Например:

Table1

id,code,name 
1,1,Tom 
2,1,Jerry 
3,1,Peter 
4,2,Charles 

Table2

code,name 
1,alpha 
2,beta 
3,gamma 

нужно выбрать все значения из таблицы 1, с максимальным кодом, но заменяя этот столбец (table1.code) для кода максимального значения (table2.code) из таблицы2.

Desidered выход

id,code,name 
4,3,Charles 

Для выбора максимального значения, я знаю, что это:

SELECT * FROM Table1 WHERE code = (SELECT MAX(code) FROM Table1) 

Как заменить?

SELECT REPLACE(Table1.code, SELECT * FROM Table1 WHERE code = (SELECT MAX(code) FROM Table1), SELECT code FROM Table2 WHERE code = (SELECT MAX(code) FROM Table2)) * FROM Table1 WHERE code = (SELECT MAX(code) FROM Table1) 

Я запутался: с Спасибо за чтение!

+0

Я не уверен, что следую тому, что вы делаете. Как вы связываете данные в таблице 1 с данными в таблице2? Просто попробуйте выбрать максимальный id из таблицы1 и максимальный код из таблицы2? – paqogomez

+0

Вы пытаетесь на самом деле ОБНОВЛЯТЬ данные или просто заменить их на выходе? – Dale

+0

Да, и замените макс код из таблицы2 на значения столбца maxcode из таблицы1, пожалуйста, простите мне мой ужасный английский. – candlejack

ответ

2

Попробуйте это.

SELECT id, 
     (SELECT Max(code) 
     FROM table2), 
     name 
FROM table1 A 
WHERE code = (SELECT Max(code) code 
       FROM table1) 
+0

Без «А», это отлично работает. Спасибо! – candlejack

-3

Вы можете использовать подзапрос, чтобы найти макс (код) из таблицы 2

Select id,(select max(code) from table2), name 
    from table1 order by code desc limit 1 

, если есть несколько строк, которые обладают кодом maximume вы можете использовать код ниже

Select id,(select max(code) from table2), name 
    from table1 where code = (select max(code) from table1) 
+0

@alessadro. Мой код делает то же, что и ваш принятый ответ, но я отправил его раньше, вы попробовали? – Ahmad

+0

Да @ Ахмад, я попробовал. И не то же самое. Посмотрите внимательно на оба кода. – candlejack

+0

@alessadro и Ahmad: код, который был отправлен сначала в Ahmad, дает результат, полученный с помощью * данных примера *, которые вы дали. Однако он не дает правильного результата, заданного в вопросе. Данные выборки и ожидаемые результаты могли бы сделать это более ясным. Также; вы могли быть более вежливыми и понимающими, говоря об этом. –

0

Вы не необходимо заменить значения, вместо этого вы можете выбрать оба верхних значения

Select Top 1 id, (Select max(code) from table2), name 
from Table1 order by code desc 

Если вы хотите, чтобы hav e ВСЕ значения максимального кода вы можете попробовать

SELECT id, (SELECT max(code) from Table2), name 
FROM Table1 WHERE code = (select max(code) from Table1) 
+0

Я думаю, что причина ошибки – candlejack

+0

Ну, я не понимаю, в чем разница между моим ответом и отмеченным, но я надеюсь, что помогла вам. –

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