を更新するために、複雑なMySQLのクエリの変換:私は非常に複雑MySQLのクエリを持っているの文
SELECT
metabase_field.description, rows_to_copy.description,
metabase_field.display_name, rows_to_copy.display_name
FROM
metabase_field LEFT JOIN (select id as table_id, name as t_name from metabase_table) metabase_field_table ON metabase_field.table_id=metabase_field_table.table_id,
(
SELECT metabase_field.name as name, metabase_field_table.t_name as t_name, metabase_field.display_name as display_name, metabase_field.description as description, metabase_field.special_type as type
FROM metabase_field
LEFT JOIN (select id as table_id, name as t_name, db_id, active, visibility_type from metabase_table) metabase_field_table ON metabase_field.table_id = metabase_field_table.table_id
LEFT JOIN metabase_database metabase_field_table_database ON metabase_field_table.db_id = metabase_field_table_database.id
where metabase_field_table.active=1 and metabase_field_table.visibility_type is null and metabase_field_table_database.name = 'Prod'
) as rows_to_copy
WHERE
metabase_field_table.table_id IN (
SELECT distinct(metabase_table.id) as ids
from metabase_table
LEFT JOIN metabase_database metabase_table_database ON metabase_table.db_id = metabase_table_database.id
where metabase_table_database.name = 'Dev' and metabase_table.active=1 and metabase_table.visibility_type is null
)
and metabase_field_table.t_name = rows_to_copy.t_name
and metabase_field.name = rows_to_copy.name
これは少し、このように見てテーブルを返します。
+-------------+-------------+--------------+--------------+
| description | description | display_name | display_name |
+-------------+-------------+--------------+--------------+
| NULL | to copy | Application | Application |
詳細奥深くに行かなくて、私はrows_to_copyからmetabase_fieldフィールドまでの結果を空にしたいという意味です。つまり、次のように設定します。
metabase_field.description = rows_to_co私はちょうど更新するために、SELECTを変更しようとしました
py.description、 metabase_field.display_name = rows_to_copy.display_nameは:
UPDATE
metabase_field LEFT JOIN (select id as table_id, name as t_name from metabase_table) metabase_field_table ON metabase_field.table_id=metabase_field_table.table_id,
(
SELECT metabase_field.name as name, metabase_field_table.t_name as t_name, metabase_field.display_name as display_name, metabase_field.description as description, metabase_field.special_type as type
FROM metabase_field
LEFT JOIN (select id as table_id, name as t_name, db_id, active, visibility_type from metabase_table) metabase_field_table ON metabase_field.table_id = metabase_field_table.table_id
LEFT JOIN metabase_database metabase_field_table_database ON metabase_field_table.db_id = metabase_field_table_database.id
where metabase_field_table.active=1 and metabase_field_table.visibility_type is null and metabase_field_table_database.name = 'Prod'
) as rows_to_copy
SET
metabase_field.description = rows_to_copy.description,
metabase_field.display_name = rows_to_copy.display_name
WHERE
metabase_field_table.table_id IN (
SELECT distinct(metabase_table.id) as ids
from metabase_table
LEFT JOIN metabase_database metabase_table_database ON metabase_table.db_id = metabase_table_database.id
where metabase_table_database.name = 'Dev' and metabase_table.active=1 and metabase_table.visibility_type is null
)
and metabase_field_table.t_name = rows_to_copy.t_name
and metabase_field.name = rows_to_copy.name
;
しかし、このクエリは何も変更していないようだ - 結果は道に滞在します彼らはいた。それを動作させる簡単な方法はありますか?
コメントなしのコードはほとんど役に立たない。 –