Объединение двух таблиц с предложением where в одном

В настоящее время у меня есть 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'

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

вопрос задан 8.04.2010
Lostdrifter
15 репутация

2 ответов


  • 5 рейтинг

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

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

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

    ответ дан Matt, с репутацией 51, 12.12.2011
  • 1 рейтинг

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

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

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

    ответ дан NebuSoft, с репутацией 3454, 8.04.2010