2015-09-04 2 views
0

Допустим, что у меня есть таблица Table1 (id INT, текст, b текст, c текст) и Table2 (id INT, текст строки0, текст строки1, текст строки2). У меня есть некоторые данные в таблице 1, и я переношу их в Таблицу 2 (id-> id, a-> row0, b-> row1, c-> row2). Теперь я хочу проверить, все ли данные перенесены, и если все поля ОК. Я использую этот выбор, чтобы найти значения Id, которые являются неправильными, но я не знаю, как оптимальный способ узнать, какие столбцы не подходят, например, у меня есть запись Table1 (1, hel, l о) и запись Table2 (1, он пустой, о) Я хотел бы знать, что столбцы а/row0 и б/row1 неверныПолучите разные столбцы в MySQL

 SELECT Table1.id, Table2.id FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE 
     Table1.a != Table2.row0 OR 
      (Table1.a NOT NULL AND BI_EN.contract.Table2.row0 IS NULL) OR 
      (Table1.a IS NULL AND BI_EN.contract.Table2.row0 IS NOT NULL) OR 
     Table1.b != Table2.row1 OR 
      (Table1.b NOT NULL AND BI_EN.contract.Table2.row1 IS NULL) OR 
      (Table1.b IS NULL AND BI_EN.contract.Table2.row1 IS NOT NULL) OR 
     Table1.c != Table2.row2 OR 
      (Table1.c NOT NULL AND BI_EN.contract.Table2.row2 IS NULL) OR 
      (Table1.c IS NULL AND BI_EN.contract.Table2.row2 IS NOT NULL) 

ответ

0

Я думаю, это достаточно:

SELECT Table1.id, Table1.a, Table1.b, Table1.c, 
     Table2.id, Table2.a, Table2.b, Table2.c 
FROM Table1 
INNER JOIN Table2 
ON Table1.id = Table2.id 
    AND (Table1.a != Table2.row0 
    OR Table1.b != Table2.row1 
    OR Table1.c != Table2.row2) 
+0

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

+0

, ваш исходный запрос состоял в том, чтобы получить только 'id'. вы не можете получить разное количество столбцов при выполнении sql-запроса. любой запрос всегда возвращает одинаковое количество столбцов. поэтому, если вам нужен только идентификатор записи, вы можете удалить другие поля из части «SELECT». – Alex

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