sql IN反向使用

时间:2017-02-27 14:48:02

标签: mysql sql pdo

我试图展示属于该位置的产品,但我失败了。

db_products.locationId 存储id的字符串,如 1,2,5,9

:locationId 存储位置ID,如 5 我将此变量作为参数发送到sql查询。

    SELECT db_products.*, 
           db_assets.path 
      FROM db_products INNER JOIN 
           db_assets ON db_assets.guid = db_products.guid 
     WHERE db_products.pcId = 1 AND 
           :locationId IN (db_products.locationId) 
  ORDER BY db_products.id

1 个答案:

答案 0 :(得分:3)

修复您的数据结构!不要将整数存储为列表中的字符串。为什么不呢?

  • 整数应存储为数字,而不是字符串。
  • SQL的字符串处理很差。
  • 应正确声明外键关系。
  • 生成的查询无法使用索引。
  • SQL有一个伟大的数据结构用于存储列表。它被称为“表”。

因此,请使用联结表。你可以查一查。

有时,我们会遇到其他人非常糟糕的设计决策。在这种情况下,MySQL有grails { profiles { repositories { myRepo { url = "http://example.com" } } } }

find_in_set()