Mysql 组合两个select语句而不使用on子句

Mysql 组合两个select语句而不使用on子句,mysql,sql,Mysql,Sql,我有两张完全不相关的表 第一个表名为pocetna_baner,它存储了将在索引页上显示的3张图片 pocetna_baner表格: 第二个表是关于blog的,我想获取datum desc订购的3个blog的信息: 博客表格 我尝试使用UNION、UNION ALL、JOIN WITH子句、full outer JOIN,但无法使其发挥作用,因为我从未遇到过在子句上没有的情况 ->我搜索了答案,找到了这个似乎还可以的答案,但不幸的是,这个答案无法实现 这就是我现在拥有的 (SELECT nu

我有两张完全不相关的表

第一个表名为
pocetna_baner
,它存储了将在索引页上显示的3张图片

pocetna_baner表格:

第二个表是关于blog的,我想获取datum desc订购的3个blog的信息:

博客表格

我尝试使用UNION、UNION ALL、JOIN WITH子句、full outer JOIN,但无法使其发挥作用,因为我从未遇到过在子句上没有的情况

->我搜索了答案,找到了这个似乎还可以的答案,但不幸的是,这个答案无法实现

这就是我现在拥有的

(SELECT null as blog_id, null as naslov, null as tekst1, null as kategorija, p.ime_slike FROM 
pocetna_baner p )
UNION ALL
(SELECT b.blog_id, b.naslov, b.tekst1, b.kategorija ,null as ime_slike
FROM blog b ORDER BY b.datum DESC LIMIT 3  )
结果就是这样


我的预期输出只是从博客b中获取由datume desc limit 3排序的
b.blog\u id,b.naslov,b.tekst1,b.kategorija,并从第二个表中添加带有
ime\u slike

的列,我刚刚给出了一个使用此代码的示例。 请根据需要更换

SELECT * FROM ( 
SELECT p.ime_slike,null as blog_id,null as naslov,null as kategorija FROM 
pocetna_baner p 
UNION ALL 
SELECT b.blog_id, b.naslov, b.tekst1, b.kategorija ,null as ime_slike
FROM blog b 
ORDER BY datum DESC LIMIT 3 ) AS k

可以通过在每个表中创建1个计数器列并对其进行匹配来构造ON子句:

select
  b.blog_id, b.naslov, b.tekst1, b.kategorija, p.ime_slike
from (
  select 
    blog_id, naslov, tekst1, kategorija,
    (@row_number1:=@row_number1 + 1) num
  from blog, (select @row_number1:=0) t 
  order by datum desc limit 3
) b left join (
  select ime_slike,
  (@row_number2:=@row_number2 + 1) num
  from pocetna_baner, (select @row_number2:=0) t
  order by id limit 3
) p on p.num = b.num
如果您确定表
pocetna_baner
中的
id
s的值为1、2和3,则可以简化为:

select
  b.blog_id, b.naslov, b.tekst1, b.kategorija, p.ime_slike
from (
  select 
    blog_id, naslov, tekst1, kategorija,
    (@row_number1:=@row_number1 + 1) num
  from blog, (select @row_number1:=0) t 
  order by datum desc limit 3
) b left join pocetna_baner p 
on p.id = b.num

Union必须具有相同的列。如果要在不同的列上使用Union,请输入null值。如果两个表完全不相关,并且不包含类似的信息,则不应使用Union。改为进行两个不同的查询。@sultania23所以,如果我是正确的,您建议将collumn添加到第一个将为null的表中,以便匹配查询中的collumn数?不要将列添加到表中,只需在执行查询时将其值设为null即可。