Выбрать фиктивный столбец с фиктивным значением и выполнить поиск в фиктивном столбце в SQL?

#mysql

#mysql

Вопрос:

У меня есть две таблицы, к которым мне нужно присоединиться

 Table1
col1   col2   col3 
------------------
 1      A      20 
 2      B      10
 3      C      30
 4      D      40

Table2
col1   col2
-----------
 1      A  
 2      B  
 3      C  
 4      D  
  

Я должен объединить обе таблицы. Поскольку в table2 нет col3, я добавил в качестве фиктивного столбца в запросе.

Мне нужно выполнить операцию поиска в обеих таблицах для col3

Я пробовал, но он выдает исключение неизвестного столбца.

 (SELECT col1, col2, col3 from table1 where col3 = "10")
 UNION
(SELECT col1, col2, "10" as col3 from table2 where col3 = "10")
  

Любая помощь будет оценена

Комментарии:

1. Как вы можете искать col3 в table2, если в нем нет такого столбца?

2. @juergend, после операции ОБЪЕДИНЕНИЯ мы могли бы выполнить поиск. Я получил свое решение.

Ответ №1:

Вы можете запросить объединенные данные непосредственно после этого:

 SELECT col1, col2, col3 from
(
 (SELECT col1, col2, col3 from table1)
  UNION
 (SELECT col1, col2, "10" as col3 from table2)
) as b 
where col3 = "10"
  

Комментарии:

1. Я ожидал только этого. Спасибо

Ответ №2:

В Table2 нет необходимости в WHERE предложении:

 SELECT col1, col2, col3 FROM Table1 WHERE col3 = '10'
UNION 
SELECT col1, col2, '10' FROM Table2
  

Посмотрите демонстрацию.
Результаты:

 > col1 | col2 | col3
> ---: | :--- | :---
>    2 | B    | 10  
>    1 | A    | 10  
>    3 | C    | 10  
>    4 | D    | 10 
  

Комментарии:

1. Where предложение необходимо, так как оно может быть любым значением поля, не относящимся к 10.

2. @Yash Нет, предложение WHERE необходимо только для Table1.