gpt4 book ai didi

mysql - sql IN反向用法

转载 作者:太空宇宙 更新时间:2023-11-03 11:40:07 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

所以,使用联结表。你可以查一下。

有时,我们会受制于其他人非常糟糕的设计决策。在这种情况下,MySQL 有 find_in_set():

SELECT p.*, a.path 
FROM db_products p INNER JOIN
db_assets a
ON a.guid = p.guid
WHERE p.pcId = 1 AND
FIND_IN_SET(:locationId, p.locationId) > 0
ORDER BY p.id;

关于mysql - sql IN反向用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42488673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com