【问题标题】:Mysql query on 5 tablesMysql查询5张表
【发布时间】:2011-08-26 04:42:21
【问题描述】:

我已经在谷歌上搜索了 2 个小时,但我认为这很简单。我有 4 个表,我可以将下面的前 4 个合并在一起,并且我拥有所有表中的所有行。我试图弄清楚如何添加 1 个额外的 FullName 列,以便所有结果根据所有其他表中的 b 在每一行中显示来自 table5 的 FullName。我希望这对某人有意义。

SELECT  a, b, NULL AS Name FROM table1
union SELECT a, b, NULL AS Name FROM table2
 union SELECT a, b, NULL AS Name FROM table3
 union SELECT a, b, NULL AS Name FROM table4
union SELECT NULL AS a, b, FullName  FROM table5 where

.....b 等于前面 4 个 select 语句中的任何 b

【问题讨论】:

    标签: mysql join union


    【解决方案1】:
    SELECT unions.*, tb5.FullName
    FROM (
    SELECT a, b FROM table1
    union SELECT a, b FROM table2
    union SELECT a, b FROM table3
    union SELECT a, b FROM table4
    union SELECT a, b FROM table5
    ) AS unions
    JOIN table5 AS tb5 ON unions.b = tb5.b
    

    可以吗?

    编辑:更新...

    【讨论】:

    • 谢谢,它可以工作,但会返回额外的行。不知道为什么。我认为这可能是因为表 5 中有一些重复的值 b 我无法控制,因为它不是我的数据。我尝试将 group by unions.b 添加到查询的末尾,但它返回的行太少。任何想法...
    • 你可以尝试“distinct”,但理想情况下,如果可能的话,你应该改变你的表结构,听起来它真的很乱。
    • 是的,我试过了,但它搞砸了,但我是其他人计划不周的受害者。感谢您的帮助。
    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    相关资源
    最近更新 更多