Объединение двух таблиц с предложением where в одном - PullRequest
2 голосов
/ 08 апреля 2010

В настоящее время у меня есть 2 таблицы, обе таблицы имеют одинаковую структуру и будут использоваться в веб-приложении. две таблицы являются производственными и временными. Временная таблица содержит один дополнительный столбец, который называется [подписан]. В настоящее время я генерирую один список, используя два столбца, которые находятся в каждой таблице (recno и name). Используя эти два поля, я могу поддерживать функцию поиска в моем веб-приложении. Теперь мне нужно ограничить количество элементов, которые можно использовать при поиске во второй таблице. Причиной этого является то, что после того, как человек «подписан», аналогичная запись создается в рабочей таблице и будет иметь свое собственное recno.

делает

Select recno, name
  from production
UNION ALL
Select recno, name
  from temp

... покажет мне всех. Я пробовал:

Select recno, name
  from production
UNION ALL
Select recno, name
  from temp
 WHERE signup <> 'Y'

Но это ничего не возвращает? Кто-нибудь может помочь?

Ответы [ 2 ]

6 голосов
/ 12 декабря 2011

За то, что вы просите, вы можете сделать это в этом стиле.

SELECT * FROM
(
    SELECT '1' as `col`
    UNION 
    SELECT '2' as `col`
) as `someAlias`
where `someAlias`.`col` = '1'

Поместите весь союз в круглые скобки, дайте ему псевдоним, затем укажите условие.

1 голос
/ 08 апреля 2010

Не уверен, понимаю ли я, что именно вы хотите. Если вы создаете записи в рабочей таблице после того, как они зарегистрировались из временной таблицы, и вам нужны только люди, которые не зарегистрировались ... вам вообще не нужно просматривать производственную таблицу. Просто:

SELECT recno, name FROM temp WHERE signup='N'

Или, тем не менее, вы пытаетесь ограничить свой поиск. Если по какой-то причине вам нужен союз, но вы пытаетесь устранить дубликаты, вам придется изменить свое утверждение, чтобы удалить предложение ALL. Союз ВСЕ заставляет вас получать дубликаты. Если вы не хотите дублировать значения, вы не должны использовать ALL в вашем UNION. Вы можете прочитать о Союзах здесь .

...