【问题标题】:How to add custom rows to an SQL query in MS Access?如何在 MS Access 中向 SQL 查询添加自定义行?
【发布时间】:2015-06-23 14:08:41
【问题描述】:

我尝试使用 UNION 但我曾经收到此消息:

查询输入必须至少包含一个表或查询

我尝试的查询是:

SELECT NULL AS ID, NULL AS Item
  UNION 
    SELECT Items.ID AS ID, Items.Item as Item
    FROM Items 
    INNER JOIN People 
    ON Items.PID=People.PID
    WHERE People.Name='John';

两个 select 语句都可以独立运行。

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    使用Dual 表

    SELECT NULL AS ID, NULL AS Item
    FROM dual
    UNION ALL
    SELECT i.ID AS ID, i.Item AS Item
    FROM Items i
    INNER JOIN People p ON i.PID = p.PID
    WHERE p.Name = 'John';
    

    【讨论】:

    【解决方案2】:

    在 MS Access 中,您将需要使用 kludge。这可能有效:

    SELECT TOP 1 NULL AS ID, NULL AS Item
    FROM (SELECT TOP 1 *
          FROM ITEMS
          ORDER BY ID
         ) as i
    UNION ALL
    SELECT Items.ID AS ID, Items.Item as Item
    FROM Items INNER JOIN
         People
         ON Items.PID = People.PID
    WHERE People.Name = 'John';
    

    子查询的唯一目的是获取包含一行的表。请记住,MS Access 中的TOP 1 如果存在平局,则可以返回多行。

    【讨论】:

    • 加 1 用于教我一个新词“kludge”...和一个很好的答案 ofc
    【解决方案3】:

    您需要指定要从哪个表中获取数据。试试这个:

    SELECT NULL AS ID, NULL AS Item
    FROM Items INNER JOIN People ON Items.PID=People.PID
    UNION 
    SELECT Items.ID AS ID, Items.Item as Item
    FROM Items INNER JOIN People ON Items.PID=People.PID
    WHERE People.Name='John';
    

    【讨论】:

      【解决方案4】:

      也许如果联合查询顺序更改为从形成的查询开始,然后是空查询:

      SELECT Items.ID AS ID, Items.Item as Item
      FROM Items 
      INNER JOIN People 
      ON Items.PID=People.PID
      WHERE People.Name='John'
      
      union 
      
      SELECT NULL AS ID, NULL AS Item
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-16
        • 2022-01-03
        • 2018-08-16
        • 2020-07-19
        • 1970-01-01
        相关资源
        最近更新 更多