目前我有2个表,这两个表具有相同的结构,并将用于Web应用程序。这两个表是生产和临时。临时表包含一个名为[已注册]的附加列。目前,我使用每个表中的两列(recno和name)生成一个列表。使用这两个字段,我能够支持我的Web应用程序搜索功能。现在我需要做的是支持限制第二个表上搜索中可以使用的项目数量。这样做的原因是,一旦一个人“注册”,就会在生产表中创建一个类似的记录,并且会有自己的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'
但这没有回报?有人可以帮忙吗?
答案 0 :(得分:5)
对于你的要求,你可以这样做。
SELECT * FROM
(
SELECT '1' as `col`
UNION
SELECT '2' as `col`
) as `someAlias`
where `someAlias`.`col` = '1'
将整个联合放在括号内,给它一个别名,然后给出条件。
答案 1 :(得分:1)
不确定我是否理解你想要的东西。如果您在从临时表中注册后在生产表中创建记录,并且您只想要未注册的人...您根本不需要查看生产表。简单地:
SELECT recno, name FROM temp WHERE signup='N'
或者您尝试限制搜索。如果由于某种原因你确实需要一个联合,但你想要消除重复,你必须修改你的语句以删除ALL子句。 Union ALL会使您获得重复项。如果您不想要重复值,则不希望在UNION中使用ALL。您可以阅读联盟here。