首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql - Union表,与字段的动态内容无关

Mysql - Union表,与字段的动态内容无关
EN

Stack Overflow用户
提问于 2017-10-03 10:14:36
回答 2查看 48关注 0票数 0

我的数据库中有两个表,它们之间没有任何关系。第一个表描述了old_item。第二个表描述了这些old_item的更新。

例如,

表1

代码语言:javascript
复制
mysql> SELECT
         coil_no
       FROM coil
       WHERE coil.coil_no = "DNA07X2B419011701A";
  Empty set (0.00 sec)

表2

代码语言:javascript
复制
mysql>SELECT
         coil_no
      FROM stock_taking_hanwa
         WHERE stock_taking_hanwa.coil_no = "DNA07X2B419011701A";
   +--------------------+
   |     coil           |
   +--------------------+
   | DNA07X2B419011701A |
   +--------------------+
1 row in set (0.00 sec)

如果你能看到,coil_no是关键。我像这样使用内部连接:

代码语言:javascript
复制
SELECT
    c.coil_no as old_item,
    sth.coil_no as newest_item
 FROM coil c
 INNER JOIN stock_taking_hanwa sth
 ON sth.coil_no = c.coil_no

 WHERE c.coil_no = "DNA07X2B419011701A" OR sth.coil_no =  "DNA07X2B419011701A" 

但它给了我Empty set (0.00 sec)

我需要这样的格式:

代码语言:javascript
复制
   +--------------------+--------------------+
   |     old_item       |      new_item      |  
   +--------------------+--------------------+
   |                    | DNA07X2B419011701A |
   +--------------------+--------------------+

注:有时在另一种情况下,反之亦然。

代码语言:javascript
复制
   +--------------------+--------------------+
   |     old_item       |      new_item      |  
   +--------------------+--------------------+
   |        "Some item" |                    |
   +--------------------+--------------------+
EN

回答 2

Stack Overflow用户

发布于 2017-10-03 10:31:59

内部联接意味着您需要包含表old_item的记录和来自new_item的记录的行。如果其中一个项目不存在,则不会返回任何记录。

在mysql中,您没有完整的联接,因此不能以这种方式选择任何值.

您可以使用UNION ALL连接两个查询(一个用左连接,另一个用右连接),但它在大型表上并不真正具有性能.

最好的方法可能是进行两个单独的查询,然后再详细说明结果,但这取决于后端。

票数 1
EN

Stack Overflow用户

发布于 2017-10-03 10:21:28

这是因为您使用内部连接,使用两个连接和联合:

代码语言:javascript
复制
(SELECT
    c.coil_no as old_item,
    sth.coil_no as newest_item
 FROM coil c
 left JOIN stock_taking_hanwa sth
 ON sth.coil_no = c.coil_no    
 WHERE c.coil_no = "DNA07X2B419011701A" OR sth.coil_no =  "DNA07X2B419011701A" )
 UNION ALL
 (SELECT
    d.coil_no as old_item,
    s.coil_no as newest_item
 FROM  stock_taking_hanwa d
 left JOIN coil  s
 ON s.coil_no = d.coil_no    
 WHERE d.coil_no = "DNA07X2B419011701A" OR s.coil_no =  "DNA07X2B419011701A") 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46542219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档