1

我需要将两个表的第一列放在一行中,并按这两列排序。这是我能写的,但它不起作用。

select title from movie 
union 
select reviewer_name from reviewer 
order by title,reviewer_name;

Mysql 说 reviewer_name 是一个未知的列。

在此处输入图像描述

4

4 回答 4

2

能否请您发送电影表 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

在此处输入图像描述

于 2013-05-03T13:11:36.050 回答
1

当您将两个(或更多)选择语句联合在一起时,第一个选择语句中的字段名称将用于输出。所以输出只会有一个名为“title”的字段。输出中没有“reviewer_name”字段。这就是你收到错误的原因。

select title 
from movie 

union 

select reviewer_name 
from reviewer 

order by title;
于 2013-05-03T13:08:31.217 回答
0

试试看:

SELECT * FROM (select title from movie union select reviewer_name from reviewer) as f order by title;

但我认为这里缺少电影和评论家之间的联系……

于 2013-05-03T13:10:18.693 回答
0

帮助排序的另一种可能性

SELECT 0 as a, title
FROM movie
UNION
SELECT 1 as a, reviewer_name as title
FROM reviewer
ORDER BY a, title
于 2018-03-13T19:08:33.570 回答