1) El primer problema es que quiero usar en un update un valor que sea el último valor (específicamente un index primary key) añadido en X tabla.
Es decir, algo así. En la
tablaA, quiero actualizar el
campo1 con el valor más nuevo del primary key de la
tablaB.
Hasta ahora me he visto la función LAST() y la función LAST_INSERT_ID(), pero parece que solo sirven para retornar valores en select o en having, incluso esta última parece que no me sirve si otra persona (o no se si el manual se refiere a usuario de DB) hace una entrada e incrementa el valor.
Hasta ahora he tratado cosas como estas, desde medio lógicas hasta disparates a ver si me resultan:
Es decir algo así:
Código sql:
Ver originalUPDATE tabla_1 AS t1, tabla_2 AS t2
SET
t1.campo1 = t2.campo_primarykey
WHERE
t1.campo_id = X AND
t2.campo_primarykey = MAX (t2.campo_primarykey)
Código sql:
Ver originalUPDATE tabla_1 AS t1
SET
t1.campo1 = campo_primarykey
WHERE
t1.campo_id = X
HAVING
MAX (tabla_2.campo_primarykey) AS campo_primarykey
Código sql:
Ver originalUPDATE tabla_1 AS t1, tabla_2 AS t2
SET
t1.campo1 = last_insert_id(tabla_2.campo_primarykey)
WHERE
t1.campo_id = X
Usando tanto MAX, como LAST, como LAST_INSERT_ID y nada.
¿alguna idea? ¿es posible lo que busco?
(olvidaba decir que sé que haciendo un select justo antes se acaba el dilema, pero quiero ahorrármelo

)
2) Lo otro es que quisiera saber si es posible usar INNER JOIN con UPDATEs
Hasta ahora he venido usando cosas así:
Código sql:
Ver originalUPDATE t1
SET
t1.campo1 = valor
WHERE
t1.campo1 = t2.campo1 AND
t2.campo2 = t3.campo2 AND
t3.campo3 = t4.campo4 AND
t4.campo5 = A;
Pero me recuerda mucho a como no deben hacerse los SELECT pudiéndose usar INNER JOINs y ya que vine a preguntar una cuestión de updates aprovecho el viaje para esta duda que siempre he tenido
Gracias adelantadas