MySQL Query不选择相同的ID

时间:2017-02-02 23:33:34

标签: mysql

我有查询在数据库中选择类似的关键字。但是,查询正在选择自己的ID作为我试图找到类似推荐的ID。我只想要建议而不是重复的ID。我试过'!='和'<>'在productID之后,但这似乎打破了它。

因此,对于这个,它将选择ID 22及其类似产品。我不希望它选择22。

3 个答案:

答案 0 :(得分:1)

我并不完全清楚你已经尝试过的事情;描述留有一点解释。我可以说这个应该工作:

SELECT * 
  FROM products
 WHERE prodID IN (SELECT prodID 
                    FROM keywords 
                   WHERE attributeID IN (SELECT attributeID 
                                           FROM keywords a 
                                          WHERE prodID = 22
                                        )
                     AND prodID <> 22
                 )
 LIMIT 4;

如果这是你尝试过的并且它没有用的东西,那么你需要指明它不起作用的方式。 (错误信息?数据不正确(如果是,如何)?

答案 1 :(得分:0)

也许我不理解这个问题但是它不像下面那么简单:

SELECT * FROM产品WHERE prodID 在 (SELECT prodID FROM keywords WHERE proid&lt;&gt; 22))LIMIT 4;

答案 2 :(得分:0)

我个人不喜欢嵌套子查询那么多,但如果你必须这样做,你可以通过添加'prodID&lt;&gt;来实现你的结果。 22'就在极限之前:

SELECT * FROM products WHERE prodID IN 
  (SELECT prodID FROM keywords WHERE attributeID IN 
    (SELECT attributeID FROM keywords a WHERE prodID = 22)) 
AND prodID <> 22 LIMIT 4;

如果您不受此限制,请注意使用加入可以获得更好的效果:

  

LEFT [OUTER] JOIN可能比同等的子查询更快,因为服务器可能能够更好地优化它 - 这一事实并非仅针对MySQL Server。

     

在SQL-92之前,外连接不存在,因此子查询是   做某些事情的唯一方法。今天,MySQL服务器和许多其他   现代数据库系统提供各种外连接类型

您可能需要查看这些内容以提高查询效果:https://dev.mysql.com/doc/refman/5.7/en/rewriting-subqueries.html