sql - 另一端的UNION ALL和内部联接

时间:2017-09-04 08:10:04

标签: mysql sqlyog

我想要想要在哪里实现的查询 与我的内部联接完全相同的值 应该是他们唯一的值作为第一个值 列,如下图所示:

enter image description here

我想输出的是图片中的红线。

这是我的疑问:

  SELECT it.Date AS 'Date', it.invoice AS 'Invoice No.', 
         it.company AS 'Company', it.total_amount AS 'Total Amount'
  FROM invoicesummary_tbl it
  WHERE it.total !=0 
  UNION ALL
  SELECT itt.Date AS 'Date',rt.revises_no AS 'Invoice_No.', itt.company AS 
  'Company', 
       itt.total_amount AS 'Total Amount'   
  FROM revises_tbl rt
  INNER JOIN invoicesummary_tbl itt
  ON itt.invoice=rt.invoice

2 个答案:

答案 0 :(得分:1)

使用DISTINCT关键字:

SELECT DISTINCT *
  FROM (SELECT it.Date AS 'Date',
               it.invoice AS 'Invoice No.',
               it.company AS 'Company',
               it.total_amount AS 'TotalAmount'
          FROM invoicesummary_tbl it
         WHERE it.total != 0
        UNION ALL
        SELECT itt.Date AS 'Date',
               rt.revises_no AS 'Invoice_No.',
               itt.company AS 'Company',
               itt.total_amount AS 'Total Amount'
          FROM revises_tbl rt
               INNER JOIN invoicesummary_tbl itt ON itt.invoice = rt.invoice
) AS a

答案 1 :(得分:1)

我猜你的第二个查询会重复这些数据。你可以试试

 SELECT it.Date AS 'Date', it.invoice AS 'Invoice No.', 
         it.company AS 'Company', it.total_amount AS 'Total Amount'
  FROM invoicesummary_tbl it
  WHERE it.total !=0 
  UNION ALL
  SELECT DISTINCT itt.Date AS 'Date',rt.revises_no AS 'Invoice_No.', itt.company AS 
  'Company', itt.total_amount AS 'Total Amount'   
  FROM revises_tbl rt
  INNER JOIN invoicesummary_tbl itt
  ON itt.invoice = rt.invoice