MySQL UNION SELECT缺少字段

罗伯托·里兹(Roberto Rizzi)

我越来越沮丧,因为我不明白为什么在我的UNION SELECT中缺少一些字段。我阅读了很好的文档,并遵循了最常见的示例,以避免在第一个和第二个SELECT之间获得不同数量的列。

它包括添加NULL列,使两个语句之间的列数达到偶数。

这是我的情况:

$query = "(SELECT GC.GroupNO AS GroupNO,
    GC.Name AS Name,
    GC.Pax AS Pax,
    GC.Start AS Start,
    NULL AS custid,
    NULL AS firstname,
    NULL AS lastname,
    NULL AS arrivaldate,
    NULL AS hour,
    NULL AS pax,
    NULL AS cctype,
    NULL AS created,
    NULL AS sid,
    NULL AS ref_source,
    NULL AS numnights
  FROM LargeGroupHostels, GroupContacts AS GC
   WHERE LargeGroupHostels.HostelNumber = %d
   AND LargeGroupHostels.Status = %s
   AND LargeGroupHostels.GroupNO = GC.GroupNO";
   AND GC.Start < %s
   ORDER BY LastUpdated DESC LIMIT %d, %d
   )UNION(
    SELECT
    NULL AS GroupNO,
    NULL AS Name,
    NULL AS Pax,
    NULL AS Start,
    `custid`,
    `firstname`,
    `lastname`,
    `arrivaldate`,
    `hour`,
    `pax`,
    `cctype`,
    `created`,
    `sid`,
    `ref_source`,
    datediff(departdate, arrivaldate) AS numnights
    FROM customer_details
    WHERE hostelnumber = %d
    AND lastupdated = "" AND status != "CANX"
    AND booking_type IN ("HOSTEL", "HOSTELPACK")
    ORDER BY customer_details.arrivaldate, customer_details.created
    LIMIT %d, %d )
    ';

除了我知道要进行的一些优化和更改之外,我的问题是:-为什么我没有得到这些色谱柱GC.Name,GC.Pax,GC.Start如果我反转两个SELECT,则恰好相反,仅考虑GC.Name,GC.Pax,GC.Start并避免其他列。

对于这种查询,我不太习惯,这是我第一次处理这种查询。我确定我遗漏了一些东西,但我不明白

迈克·布兰特

例如GC.name您正在尝试使用UNION NameMySQL将它们解释为两个单独的列,因为它无法智能地猜测您的意图(并且可能不应该具有这种能力)。您应该在第一个SELECT语句中为当前没有别名的列名加上别名:

SELECT GC.GroupNO AS GroupNO,
GC.Name AS Name,
GC.Pax AS Pax,
GC.Start AS Start,

在所有其他情况下,您的别名或原始列名称均匹配。

我也同意上面的评论之一,它可能更适合某种JOIN。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mysql UNION SELECT缺少字段

来自分类Dev

MySQL UNION SELECT和IN子句

来自分类Dev

MySQL UNION SELECT和IN子句

来自分类Dev

禁用 MySQL 的 UNION SELECT 查询

来自分类Dev

如何将select *与union结合使用?MySQL的

来自分类Dev

UNION SELECT 上的 MySQL COUNT 整数值并显示为值

来自分类Dev

MySQL JOIN UNION的结果

来自分类Dev

mysql UNION查询输出

来自分类Dev

MySQL多个ORDER BY与UNION

来自分类Dev

Improve MySQL Union Statement

来自分类Dev

MySQL的:排除UNION记录

来自分类Dev

MySQL JOIN UNION的结果

来自分类Dev

mysql UNION查询输出

来自分类Dev

MySQL UNION按日期

来自分类Dev

Mysql UNION Tables MAX日期

来自分类Dev

Mysql中UNION子句的替代

来自分类Dev

MySQL中使用JDBC的UNION

来自分类Dev

MySQL:如何改善此UNION?

来自分类Dev

MySQL UNION查询语法问题

来自分类Dev

Mysql中UNION子句的替代

来自分类Dev

MySQL UNION ALL与LEFT JOIN

来自分类Dev

UNION 语句中的 MySQL Order By

来自分类Dev

mySQL UNION和LIMIT具有一个SELECT优先级

来自分类Dev

MySQL-具有RLIKE和GROUP BY的UNION SELECT-无法插入INNER JOIN

来自分类Dev

MySQL'union all'不带回第二条select语句的信息

来自分类Dev

在Mysql中使用select union创建一个附加列

来自分类Dev

mysql union select where table1 field3 = table2 field5

来自分类Dev

在 MySQL 查询上使用 SELECT...UNION 没有返回正确的数据

来自分类Dev

在peewee union select中放置一个空字段