我需要将两个表的第一列放在一行中,并按这两列排序。这是我能写的,但它不起作用。
select title from movie
union
select reviewer_name from reviewer
order by title,reviewer_name;
Mysql 说 reviewer_name 是一个未知的列。
我需要将两个表的第一列放在一行中,并按这两列排序。这是我能写的,但它不起作用。
select title from movie
union
select reviewer_name from reviewer
order by title,reviewer_name;
Mysql 说 reviewer_name 是一个未知的列。
能否请您发送电影表 ddl 和审阅者 ddl,这两个表中存在哪些列?
也许您正在寻找的东西可以通过以下方式解决:
select
m.title,
r.reviewer_name
from
movie m,
reviewer r
where
m.movieid = r.movieid
order by m.title, r.reviewer_name;
在更新问题之后,您可以这样做:
select
mo.title,
rv.reviewer_name,
ra.stars
from
movie mo,
reviewer rv,
rating ra
where
mo.movieid = ra.movieid
and
ra.reviewerid = rv.reviewerid
order by mo.title, rv.reviewer_name
我也在 ms 访问中快速做到了这一点:
SELECT
movie.title,
reviewer.reviewer_name,
rating.stars
FROM reviewer
INNER JOIN (movie INNER JOIN rating ON movie.movieid = rating.movieid)
ON reviewer.reviewerid = rating.reviwerid
ORDER BY movie.title, reviewer.reviewer_name
当您将两个(或更多)选择语句联合在一起时,第一个选择语句中的字段名称将用于输出。所以输出只会有一个名为“title”的字段。输出中没有“reviewer_name”字段。这就是你收到错误的原因。
select title
from movie
union
select reviewer_name
from reviewer
order by title;
试试看:
SELECT * FROM (select title from movie union select reviewer_name from reviewer) as f order by title;
但我认为这里缺少电影和评论家之间的联系……
帮助排序的另一种可能性
SELECT 0 as a, title
FROM movie
UNION
SELECT 1 as a, reviewer_name as title
FROM reviewer
ORDER BY a, title