例如,我不知道每个表中有多少行,我尝试这样做:
SELECT * FROM members
UNION
SELECT * FROM inventory
Run Code Online (Sandbox Code Playgroud)
SELECT如果不添加NULL's,我可以放到第二个而不是*来删除此错误?
明确列出列名而不是*,并确保列和数据类型的数量与每个选择中的同一列匹配.
更新:
我真的不认为你想根据表名来联合这些表.它们似乎不包含相关数据.如果您发布架构并描述您要实现的目标,我们可能会提供更好的帮助.
你能做到的
SELECT *
from members
UNION
SELECT inventory.*, 'dummy1' AS membersCol1, 'dummy2' AS membersCol2
from inventory;
Run Code Online (Sandbox Code Playgroud)
其中membersCol1,membersCol12等等... members是不在列中的列的名称inventory.这样,联合中的两个查询都将具有相同的列(假设所有列inventory都相同,members对我来说似乎很奇怪......但是,嘿,这是你的架构).
更新:
作为HLGEM指出,这只是工作,如果inventory有相同名称的列members,并以相同的顺序.明确命名所有列是最好的想法,但由于我不知道名称,我不能完全这样做.如果我这样做,它可能看起来像这样:
SELECT id, name, member_role, member_type
from members
UNION
SELECT id, name, '(dummy for union)' AS member_role, '(dummy for union)' AS member_type
from inventory;
Run Code Online (Sandbox Code Playgroud)
我不喜欢使用NULL为虚值,因为那并不总是很清楚哪一个记录来自于联盟的一部分 - 使用"虚拟"清楚地表明该记录是来自于美国的部分不具有该记录(虽然有时这可能无关紧要).unioning这两个表的想法似乎很奇怪,因为我很怀疑他们会超过1个或2列具有相同的名称,但你问的问题在这样的,我在你的情况想象这莫名其妙的方式说得通.
| 归档时间: |
|
| 查看次数: |
50619 次 |
| 最近记录: |