我只想比较SELECT查询的两个结果。因此,如何在没有任何相关性的情况下合并来自两个表的列(没有什么相同,因此不能使用JOIN..ON ..查询)。 这是我的查询代码:
SELECT QueryName,Recommendation,Price
FROM PaidGame
WHERE PriceFinal != '0';
SELECT QueryName,Recommendation,Price
FROM FreeGame
WHERE PriceFinal = '0';
我的问题是,我是否有任何可能的方式将这些列组合到一个输出中。 这是我的输出,我想将这6列放在一起,以进行比较。 enter image description here
这就是我的期望,我只想让它们一起显示。 enter image description here
答案 0 :(得分:0)
您可以进行并集或全部合并以将两个选择组合在一起,或者比较3列的校验和以查看它们是否相等
答案 1 :(得分:0)
SELECT QueryName,Recommendation,Price FROM PaidGame WHERE PriceFinal != '0'
UNION ALL
SELECT QueryName,Recommendation,Price FROM FreeGame WHERE PriceFinal = '0';
这就是您所追求的。关键字ALL可能不是必需的。
更多示例:https://www.w3schools.com/sql/sql_union.asp
已更新
SELECT P.QueryName, P.Recommendation, P.Price, F.QueryName, F.Recommendation, F.Price
FROM PaidGame P, FreeGame F
或
SELECT P.QueryName, P.Recommendation, P.Price, F.QueryName, F.Recommendation, F.Price
FROM PaidGame P
JOIN FreeGame F
答案 2 :(得分:0)
除了可以在表示层(例如XSL,报表等)中更好地完成此操作之外,您还可以这样做。
我的解决方案是创建一个索引表,然后加入到每个表查询中,并添加一个行标识符。这样的事情(希望可以翻译成Mysql-我更像是TSQL的人):
create table #index (indexnum int)
declare @minnum as int set @minnum=1 while @minnum<1000 BEGIN
insert into #index select @minnum set @minnum=@minnum+1 END
create table #paidgame (queryname varchar(100), recommendation varchar(100), price varchar (100))
create table #freegame (queryname varchar(100), recommendation varchar(100), price varchar (100))
insert into #paidgame select 'Game 1', 'Good', '£4.99' UNION ALL select 'Game 2', 'Good', '£3.99' UNION ALL select 'Game 3', 'Good', '£5.99'
insert into #freegame select 'Game 4', 'Good', '£0.00' UNION ALL select 'Game 5', 'Good', '£0.00' UNION ALL select 'Game 6', 'Good', '£0.00'
select * from
#index i left join (select * from (
SELECT QueryName,Recommendation,Price, dense_rank() OVER (ORDER BY queryname) as prank FROM #PaidGame pg ) aa ) t1 on t1.prank=i.indexnumn
left join
(select * from (SELECT QueryName,Recommendation,Price, dense_rank() OVER (ORDER BY queryname) as frank FROM #FreeGame fg ) bb) t2 on i.indexnumn=t2.frank
where t1.queryname is not null and t2.queryname is not null