【问题标题】:How to find two different matched data for one parent id?如何为一个父 ID 找到两个不同的匹配数据?
【发布时间】:2017-05-05 08:52:25
【问题描述】:

您好,我必须搜索 Iron 和 van。在我的搜索条件下,铁在一排,货车在另一排。两者都具有相同的父 ID。我是如何在一个 mysql 查询中找到这两条记录的。

我正在使用这个查询。

SELECT * FROM  `products prod,parents p ` 
WHERE  `p.id` =1 AND prod.name = 'Van' AND prod.name = 'Iron'

这是我的桌子

父母

     id    
----------
     1    
     2    

孩子

     id   |   name   |   parent   
---------------------------------
     5    |   iron    |     1
     6    |   van     |     1
     7    |   jane    |     2

我想要

id | name | parent
------------------
5  | van  | 1
6  | iron | 1

我怎样才能得到我提到的输出。

【问题讨论】:

    标签: mysql ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    使用In and Inner Join

    SELECT * FROM  products prod Inner join parents p on p.id=prod.parent 
    WHERE  `p.id` =1 AND prod.name In( 'Van' ,'Iron') 
    

    【讨论】:

    • 我怎样才能通过这种方法使用 LIKE?
    • Like 在性能上比较慢,所以请使用 IN 而不是 LIKE
    【解决方案2】:

    使用 OR 运算符代替 AND

    SELECT * 
    FROM products prod,
         parents p
    WHERE p.id=1 AND (prod.name='Van' OR prod.name='Iron')
    

    【讨论】:

      【解决方案3】:

      您好,查找相同父 ID 的查询应该是这样的

      SELECT prod.id,prod.name,p.parent
        FROM  products prod,parents p
      WHERE p.id in 
      (SELECT  parent FROM parents
          WHERE 2 >=
        (SELECT COUNT(parent) FROM parent WHERE p.id=parent GROUP BY parent)
      );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 2016-03-03
        • 1970-01-01
        • 2020-11-21
        • 1970-01-01
        相关资源
        最近更新 更多