mysql - join sql命令的使用

标签 mysql join

我有两个表 - 小工具和用法。小工具有一个唯一 ID 和相应的字段。而“使用情况”显示了小工具的旧 ID 值和新 ID 值等使用情况。

Gadgets TABLE
         ID  &  gadgetName

USAGE TABLE
     oldID & newID

现在我想使用 input = gadgetName 在它们之间进行映射
让字段就像这样

 Gadgets 

 ID   gadgetName
 +++ ++++++++++++
 id1    nokia
 id2    motog
 id3    xiamoi
 id4    micromax

使用表就像

Usage Table

oldID   newID
+++++   ++++++
 id1     id2
 id2     id3
 id3     id4
 id2     id4

现在,输入为 micromax ,我想从 gadget 表中检索 gadgetName,该表存在于 oldID 中,而 newID 为 micromax。

就像 o/p 一样:

oldIDgadgetName
++++++++++++++++
xiamoi 
motog    

编辑:

我试过这个:

SELECT gadgets.gadgetName, gadgets.ID FROM usage, gadgets 
WHERE  usage.oldID IN ( 
   SELECT usage.oldID FROM usage , gadgets 
   WHERE usage.newID = gadgets.ID AND gadgets.gadgetName= ".$datawon."
 )" );

&我没有得到想要的输出... 。 我想在这里申请加入..请指导我。

最佳答案

实现此目的的一种方法是加入 Gadget 表两次:

select g2.gadgetName as oldIDgadgetName
from Gadgets g1
join Usage u on g1.ID = u.newID
join Gadgets g2 on g2.ID = u.oldID
where g1.gadgetName = 'micromax'

给定您的示例数据,这将返回:

oldIDgadgetName
---------------
motog
xiamoi

这也可以完全不使用连接来编写(但它的性能可能会更差),如下所示:

select gadgetName 
from Gadgets 
where id in (
    select oldid 
    from Usage 
    where newID in (
       select id 
       from Gadgets 
       where gadgetName = 'micromax'
    )
)

关于mysql - join sql命令的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28381947/

相关文章:

mysql - 加入两个选择语句

mysql - 由于在 MySQL 中使用保留字作为表名或列名而导致的语法错误

mongodb - 获取 MongoDB 中包含 n 个最新评论的帖子

Mysql join where value or null

SQL 连接 postgresql 上的许多表

sql-server - 带有 where 子句的内连接索引

mysql - 将表格行合并为一行(集合?)

PHP json_encode($_POST) 和 mySQL 问题

php - MySql:任何方式: UPDATE $tableName SET value=LEAST(value+$change, maxValue)

mysql - WordPress 数据库问题