Если вы скажете нам, что такое цель real , мы сможем найти решение, которое позволит избежать этого беспорядка WHERE
. Между тем, вот несколько связанных запросов:
Это приведет к дедупликации набора строк:
( SELECT * FROM TableA )
UNION DISTINCT
( SELECT * FROM TableB )
Так будет и так:
SELECT DISTINCT *
FROM
(
( SELECT * FROM TableA )
UNION ALL
( SELECT * FROM TableB )
)
Вот другой подход к размышлению. Это все еще много печатать, но вы можете скопировать и вставить, чтобы сделать часть работы:
SELECT ...
FROM TableA
JOIN TableB
ON CONCAT_WS("\t", a.name, a.date, ... ) =
CONCAT_WS("\t", b.name, b.date, ... )
Как получить список столбцов, не набирая их:
SET group_concat_len = 12345; -- something big enough = 12345;
SELECT GROUP_CONCAT(column_name)
FROM information_schema.columns
WHERE table_schema = '...' -- use the database name
AND table_name = 'Table_A'
AND column_name != 'id'; -- to exclude `id`