[英]using a select to find info from 2 tables that have similar columns
我有 2 个非常相似的表,它们都部分具有相同的列名(和数据类型),因此不必逐个 select 表,我想让它使第一个表的列变得与第二个表的列相同(就像如果他们有 4 列同名,而不是选择后有 8 列,它只显示 3)
JOIN items i ON i.characterId=c.characterId
WHERE i.itemId=18011
SELECT c.accountId,c.characterId,c.name,b.itemId,b.maxUpgrade,b.amount FROM characters c
JOIN bankItems b ON b.accountId=c.accountId
WHERE b.itemId=18011
这是我对 select 提出的请求的一个示例,两个表中的相同信息,我需要做 2 个不同的请求,我希望我可以融合它们
表 1(字符):
characterId accountId name
表2(项目):
characterId itemId maxUpgrade amount
表 3(银行项目):
accountId itemId maxUpgrade amount
结果:
accountId characterId name itemId maxUpgrade amount
但全部在 1 个请求中,因此无需输入WHERE c.name=
两次
您可以在 CTE 中合并 items 和 bankItems 表,然后加入 CTE 上的字符表,例如使用 accountId 或 characterId:
;WITH CTE AS (
SELECT itemId, NULL AS characterId, accountId, maxUpgrade, amount
FROM bankItems
UNION
SELECT itemId, characterId, NULL AS accountId, maxUpgrade, amount
FROM items
)
SELECT
c.accountId,
c.characterId,
c.name,
b.itemId,
b.maxUpgrade,
b.amount
FROM characters c
JOIN CTE b ON
b.accountId = c.accountId
OR b.characterId = c.characterId
WHERE b.itemId = 18011;
考虑到表结构,这个带有可选字段的解决方案应该可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.