从三个不同的表中获取所有值..加入问题?

时间:2009-09-12 02:04:43

标签: sql mysql

我正在学习mysql并且一直试图让它工作,但无论我如何尝试它总会出现错误 - 或者它只是没有从表中显示任何内容。

我有3个表,所有表都有相同数量的列和列名

我想按标题

按字母顺序列出所有值

表格:一般 - 温度 - 位置

列:id - url - title - description

你会怎么写select语句?

我尝试了很多方法,无法弄明白......我猜它看起来像

SELECT * FROM General JOIN Temp ON General.title = Temp.title JOIN Location ON Temp.title = General.title

我已经广泛地改变了像Temp.title = General.title这样的值,这似乎没什么帮助

有什么想法吗?

谢谢!

p.s - 我也尝试了这个并且它提供了数据,但只显示了一般表中的一些结果以及来自temp的帖子数量......非常混乱

SELECT
   General.id,
   General.url,
   General.title,
   General.description,
   Temp.id,
   Temp.url,
   Temp.title,
   Temp.description,
   Location.id,
   Location.url,
   Location.title,
   Location.description
FROM
   General INNER JOIN Temp
   ON General.id = Temp.id
   INNER JOIN Location
   ON Temp.id = Location.id
ORDER BY
   General.title

2 个答案:

答案 0 :(得分:4)

(SELECT id, url, title, description FROM General)
UNION 
(SELECT  id, url, title, description FROM Temp)
UNION 
(SELECT id, url, title, description FROM Location)
ORDER BY Title

MySQL Reference

答案 1 :(得分:1)

添加带有额外列的表:

SELECT NULL 'id',
       NULL 'url',
       NULL 'title',
       NULL 'description',
       NULL 'extra_column'
  FROM DUAL
UNION
SELECT g.id, 
       g.url, 
       g.title, 
       g.description,
       NULL
  FROM GENERAL g
UNION 
SELECT t.id, 
       t.url, 
       t.title, 
       t.description,
       NULL
  FROM TEMP t
UNION 
SELECT l.id, 
       l.url, 
       l.title, 
       l.description,
       NULL
  FROM LOCATION l
ORDER BY title

这假设您需要额外表中的所有列。如果不这样做,请不要包含额外的列,但要确保数据类型与SELECT语句中的位置匹配。