3

目前我有 2 个表,这两个表具有相同的结构,并且将在 Web 应用程序中使用。这两个表是生产和临时。临时表包含一个名为 [已注册] 的附加列。目前,我使用在每个表中找到的两列(recno 和 name)生成一个列表。使用这两个字段,我可以支持我的 Web 应用程序搜索功能。现在我需要做的是支持限制可以在第二个表的搜索中使用的项目数量。这样做的原因是,一旦一个人“注册”,就会在生产表中创建一个类似的记录,并且会有自己的记录。

正在做:

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'

但这什么都不返回?任何人都可以帮忙吗?

4

2 回答 2

8

对于你的要求,你可以这样做。

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

将整个联合放在括号内,给它一个别名,然后给出条件。

于 2011-12-12T19:24:18.477 回答
1

不确定我是否完全理解你想要什么。如果您从临时表中注册后在生产表中创建记录,并且您只想要尚未注册的人......您根本不需要查看生产表。简单地:

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

或者您试图限制您的搜索。如果由于某种原因您确实需要联合,但您试图消除重复项,则必须修改您的语句以删除 ALL 子句。Union ALL 会导致您获得重复项。如果你不想重复值,你不想在你的 UNION 中使用 ALL。您可以在此处阅读有关 Unions的信息。

于 2010-04-08T19:08:36.573 回答