当前位置: 首页 > 面试题库 >

Mysql的SELECT联合为不同的列?[重复]

柴飞扬
2023-03-14
问题内容

这个问题已经在这里有了答案

合并具有不同列数的两个表 (4个答案)

6年前关闭。

我有一个选择查询,用于选择附加了缩略图文件的文件,我还需要获取未附加缩略图的文件。

我当前的SQL查询是

SELECT   node.title, node.nid, files.fid, files.filepath, 
         content_type_mobile_event.field_date_value, 
         content_type_mobile_event.field_movie_shorts_value, 
         content_type_mobile_event.field_director_value, 
         content_type_mobile_event.field_length_value, 
         content_type_mobile_event.field_movie_type_value, 
         content_type_mobile_event.field_year_value, 
         content_type_mobile_event.field_event_type_value, 
         content_type_mobile_event.field_movie_location_value, 
         content_type_mobile_event.field_movie_desc_value, 
         content_type_mobile_event.field_movie_id_value, 
         content_type_mobile_event.field_movie_thumb_fid, 
         content_type_mobile_event.field_movie_trailer_url 
FROM     node, content_type_mobile_event, files 
WHERE    node.nid=content_type_mobile_event.nid AND 
         content_type_mobile_event.field_movie_thumb_fid=files.fid 
ORDER BY content_type_mobile_event.field_date_value ASC

我还需要

SELECT   node.title, node.nid, content_type_mobile_event.field_date_value, 
         content_type_mobile_event.field_movie_shorts_value, 
         content_type_mobile_event.field_director_value, 
         content_type_mobile_event.field_length_value, 
         content_type_mobile_event.field_movie_type_value, 
         content_type_mobile_event.field_year_value, 
         content_type_mobile_event.field_event_type_value, 
         content_type_mobile_event.field_movie_location_value, 
         content_type_mobile_event.field_movie_desc_value, 
         content_type_mobile_event.field_movie_id_value, 
         content_type_mobile_event.field_movie_thumb_fid, 
         content_type_mobile_event.field_movie_trailer_url 
FROM     node, content_type_mobile_event 
WHERE    node.nid=content_type_mobile_event.nid AND
         content_type_mobile_event.field_movie_thumb_fid!=1 
ORDER BY content_type_mobile_event.field_date_value ASC

我通常只会做一个

(
SELECT   node.title, node.nid, files.fid, files.filepath, 
         content_type_mobile_event.field_date_value, 
         content_type_mobile_event.field_movie_shorts_value, 
         content_type_mobile_event.field_director_value, 
         content_type_mobile_event.field_length_value, 
         content_type_mobile_event.field_movie_type_value, 
         content_type_mobile_event.field_year_value, 
         content_type_mobile_event.field_event_type_value, 
         content_type_mobile_event.field_movie_location_value, 
         content_type_mobile_event.field_movie_desc_value, 
         content_type_mobile_event.field_movie_id_value, 
         content_type_mobile_event.field_movie_thumb_fid, 
         content_type_mobile_event.field_movie_trailer_url 
FROM     node, content_type_mobile_event, files 
WHERE    node.nid=content_type_mobile_event.nid AND 
         content_type_mobile_event.field_movie_thumb_fid=files.fid 
ORDER BY content_type_mobile_event.field_date_value ASC
)
UNION
(
SELECT   node.title, node.nid, content_type_mobile_event.field_date_value, 
         content_type_mobile_event.field_movie_shorts_value, 
         content_type_mobile_event.field_director_value, 
         content_type_mobile_event.field_length_value, 
         content_type_mobile_event.field_movie_type_value, 
         content_type_mobile_event.field_year_value, 
         content_type_mobile_event.field_event_type_value, 
         content_type_mobile_event.field_movie_location_value, 
         content_type_mobile_event.field_movie_desc_value, 
         content_type_mobile_event.field_movie_id_value, 
         content_type_mobile_event.field_movie_thumb_fid, 
         content_type_mobile_event.field_movie_trailer_url 
FROM     node, content_type_mobile_event 
WHERE    node.nid=content_type_mobile_event.nid AND 
         content_type_mobile_event.field_movie_thumb_fid!=1 
ORDER BY content_type_mobile_event.field_date_value ASC
)

但是问题是第二个具有不同的列集(减去文件。*部分)

我一生无法弄清楚该如何做。


问题答案:

如果您具有不同的字段,这些字段也具有不同的含义,则不能也不应将它们返回到相同的位置。但是,您可以通过在字段中添加null来“填补空白”,如下所示:

select id, name, date, null as userid, 'A' as recordtype from table1
union all
select id, name, null /*as date*/, userid, 'B' as recordtype from table2

您可以在第一个选择中为null提供别名。为了清楚起见,您可以在第二个选择中添加别名,但是不会使用。您甚至可以使用常量值,以后可以用来区分记录类型。



 类似资料:
  • 问题内容: 当我们在具有不同数据类型的两个表上执行时,由于SQL Standard而产生的预期行为是什么: 给 将varchar值“ asd”转换为数据类型int时,转换失败。 但是标准中定义了什么? 问题答案: 如果要在每个查询中使用列,则必须具有相同的类型。必须转换为varchar,因为它是varchar。请尝试以下解决方案 我替换为-我认为这是拼写错误。

  • 我想将一列聚合为一组值。 让我们考虑以下模式 我需要这样的结果 我试着搜索一个集合聚合函数,但找不到任何有用的东西。

  • 问题内容: 使用此解决方案,我尝试将COALESCE用作MySQL查询的一部分,该查询使用SELECT As输出到csv文件,以在导出数据时命名列名称。 我想要3列:名字,姓氏和联系人电话 我得到5列:名字,姓氏,ContactPhoneAreaCode1,ContactPhoneNumber1和Contact_Phone 如何在查询中将ContactPhoneAreaCode1和ContactP

  • 我使用嵌套的Select语句从表1中获得单行结果,我需要在同一行的末尾追加表3中的另一列(COLX)。我试过联合,但结果是两行。有什么建议吗? table2.colz和table3.colx是用来匹配条目的ID。这两个最终结果都符合要求。 编辑(进一步解释我的表结构) COLX是表3的ID,以匹配表2中的COLZ 表2 ID中的COL1与表1中的COL1匹配 结果我需要的是表1.col1,表1.c

  • 问题内容: 我有两个表: 数量和unit_price(id |名称| order_id | qt | unit_price)和table 。 我想对相同的订单进行表和放置,以获取订单的总价。 该上的项目表查询很简单,适用于相同的order_id内的所有项目给予罚款数额: 但我无法在表中插入此值。我无法完成这项工作: 它返回 我在这里找到了一个非常类似的问题,但答案对我也没有用: 问题答案: 您可以

  • 我正试图创建一个产品清单使用谷歌表。每种类型的产品都有许多属性(或变体),这些属性组合在一起可以创建单个产品。 例如,有 直径:1/4英寸、1/2英寸、3/4英寸等。 长度:1/2英寸、1英寸、1/2英寸等 材料:钢、不锈钢 等等 特定产品是这些变化的特定组合。例如: 1/4英寸X 1/2英寸钢制圆头方颈螺栓 我要做的是创建一系列只包含属性的列。因此,直径柱、长度柱、材料柱等。 然后,我想通过将这