Литье анонимных типов в интерфейсы было чем-то, что я хотел какое-то время, но, к сожалению, текущая реализация заставляет вас иметь реализацию этого интерфейса.
Лучшее решение вокруг него - это некоторый тип динамический прокси-сервер, который создает для вас реализацию. Используя отличный проект LinFu , вы можете заменить
выбрать новый {A = значение.A, B = значение.C + "_" + значение.D};
с
выберите новый DynamicObject (новый {A = значение.A, B = значение.C + "_" + значение.D}). CreateDuck & л; DummyInterface & GT; ();
Вы можете сделать это одним из двух способов:
Синтаксис соединения с обновлением MySQL:
таблица обновленийA левая таблица joinB b на a.name_a = b.name_b set validation_check = if (start_dts & gt; end_dts, 'VALID', '') - где может быть предложение where
Синтаксис ANSI SQL:
update tableA set validation_check = (SELECT if (start_DTS & gt; end_DTS, 'VALID', '') как validation_check FROM tableA LEFT JOIN tableB ON name_A = name_B WHERE id_A = tableA.id_A)
Pick какой вам кажется наиболее естественным для вас.
Вы можете обновлять значения из другой таблицы, используя внутреннее объединение, как это
UPDATE [table1_name] AS t1 INNER JOIN [table2_name] AS t2 ON t1.column1_name] = t2. [column1_name] SET t1. [column2_name] = t2.column2_name];
Следуйте здесь, чтобы узнать, как использовать этот запрос http://www.voidtricks.com/mysql-inner-join-update/
, или вы можете использовать select в качестве подзапроса для этого
UPDATE [table_name] SET [имя_столбца] = (SELECT [имя_столбца] FROM [имя_таблицы] WHERE [имя_столбца] = [значение]) WHERE [column_name] = [значение];
подробно описан здесь http://www.voidtricks.com/mysql-update-from-select/
UPDATE `table1` AS` dest`, (SELECT * FROM `table2` WHERE` id` = x) AS `src` SET` dest`.`col1` = `src`.`col1` WHERE `dest`.`id` = x;
Надеюсь, это сработает для вас.
UPDATE [table_name] AS T1, (SELECT [имя_столбца] FROM [имя_таблицы] WHERE [имя_столбца] = [значение]) AS T2 SET T1. [column_name] = T2. [column_name] + 1 WHERE T1. [column_name] = [значение];
UPDATE receipt_invoices dest, (SELECT `receipt_id`, CAST ((net * 100) / 112 AS DECIMAL (11, 2)) witoutvat FROM receipt WHERE CAST ((net * 100) / 112 AS DECIMAL (11 , 2))! = Total AND vat_percentage = 12) src SET dest.price = src.witoutvat, dest.amount = src.witoutvat WHERE col_tobefixed = 1 И dest.`receipt_id` = src.receipt_id;
Надеюсь, это поможет вам в случае, когда вам нужно сопоставлять и обновлять между двумя таблицами.
Если кто-то пытается обновить данные из одной базы данных в другую, независимо от того, на какую таблицу они нацелены, для этого должны быть некоторые критерии.
Этот код лучше и чист для всех уровней: [ ! d2]
update dbname1.content targetTable left join dbname2.someothertable sourceTable at targetTable.compare_field = sourceTable.compare_field set targetTable.col1 = sourceTable.cola, targetTable.col2 = sourceTable.colb, targetTable.col3 = sourceTable .colc, targetTable.col4 = sourceTable.cold
Traaa! Он отлично работает!
С учетом вышеизложенного вы можете изменить заданные поля и критерии «on», чтобы выполнить свою работу. Вы также можете выполнить проверки, затем потянуть данные в таблицу temp, а затем запустить обновление, используя приведенный выше синтаксис, заменив имена таблиц и столбцов.
Надеюсь, что это сработает, если не сообщите мне. Я напишу вам точный запрос.
Легко в MySQL:
Пользователи UPDATE AS U1, пользователи AS U2 SET U1.name_one = U2.name_colX WHERE U2.user_id = U1.user_id
У меня была проблема с дублирующимися записями в одной таблице. Ниже приведены подходы к работе.
Наконец, я решил это, используя следующие запросы:
IF OBJECT_ID ( N'tempdb .. # New_format_donor_temp ', N'U') НЕ ТАБЛИЦА NULL DROP #New_format_donor_temp; выберите * в #New_format_donor_temp из DONOR_EMPLOYMENTS, где DONOR_ID IN (1, 2) - Test New_format_donor_temp - SELECT * - FROM #New_format_donor_temp;
UPDATE de SET STATUS_CD = de_new.STATUS_CD, STATUS_REASON_CD = de_new.STATUS_REASON_CD, TYPE_CD = de_new.TYPE_CD FROM DONOR_EMPLOYMENTS КАК ИННЕРНАЯ ПРИСОЕДИНЯЯСЬ #New_format_donor_temp AS de_new ON de_new.EMP_NO = de.EMP_NO WHERE de.DONOR_ID IN (3, 4 )
Я не очень разбираюсь в SQL, пожалуйста, сообщите нам какой-нибудь лучший подход.
Выше запросы для сервера MySql.
Вы можете использовать:
UPDATE Станция AS st1, StationOld AS st2 SET st1.already_used = 1 WHERE st1.code = st2.code
Я нашел этот вопрос в поиске моего собственного решения для очень сложного соединения. Это альтернативное решение для более сложной версии проблемы, которая, как мне показалось, может быть полезна.
Мне нужно заполнить поле product_id в таблице действий, где действия нумеруются в единице, а единицы нумеруются на уровне (идентифицированном с использованием строки N), так что можно определить действия используя SKU, т.е. L1U1A1. Затем эти SKU хранятся в другой таблице.
Я определил следующее, чтобы получить список activity_id vs product_id: -
SELECT a.activity_id, w.product_id FROM activity a JOIN units USING (unit_id) JOIN product_types ИСПОЛЬЗОВАНИЕ (product_type_id) JOIN web_products w ON sku = CONCAT ('L', SUBSTR (product_type_code, 3), 'U', unit_index, 'A', activity_index)
Я обнаружил, что это был слишком сложным для включения в SELECT в mysql, поэтому я создал временную таблицу и присоединился к ней с помощью инструкции update: -
CREATE TEMPORARY TABLE activity_product_ids AS (& lt; вышеуказанный оператор select & gt; ); Действия UPDATE: JOIN activity_product_ids b ON a.activity_id = b.activity_id SET a.product_id = b.product_id;
Я надеюсь, что кто-то найдет это полезное
Для этой же таблицы
UPDATE PHA_BILL_SEGMENT AS PHA (SELECT BILL_ID, COUNT (REGISTRATION_NUMBER) AS REG FROM PHA_BILL_SEGMENT GROUP BY REGISTRATION_NUMBER, BILL_DATE, BILL_AMOUNT ИМЕЕТ REG & gt; 1) T SET PHA .BILL_DATE = PHA.BILL_DATE + 2 WHERE PHA.BILL_ID = T.BILL_ID;
IF
для первого запроса для обновления поля. Отлично, Еппее. – NullPointer 26 April 2016 в 18:53Вы не можете указать целевую таблицу ___ для обновления в предложении FROM SQL.sql
– Jugali Lakota 9 November 2016 в 17:20