【问题标题】:selecting data where column is array选择列为数组的数据
【发布时间】:2023-01-25 15:20:39
【问题描述】:

我有两张桌子

待定

tb1_id          -       store_ids      -           date
  1             -        1,2,3,4       -        2023-01-01
  2             -            3,4       -        2023-06-01

待定2

tb2_id          -       name      -              date
 1              -       gold      -           2023-01-01
 2              -       mond      -           2023-01-01
 3              -       burgar    -           2023-01-01
 4              -       glass     -           2023-01-01
 5              -       blackD    -           2023-01-01

我试过的是

SELECT * 
FROM `tb2`
JOIN `tb1`
WHERE `tb2_id` IN (`store_ids`)

我收到错误“警告:#1292 截断了不正确的整数值:1,2,3,4”

【问题讨论】:

  • 您不应该将外键存储为 csv。这是非常糟糕的数据库设计
  • 阅读有关find_in_set
  • find_in_set 显示空结果@Jens
  • 你能分享你的数据库结构吗?因为您的查询运行完美 @diyeco5337
  • @diyeco5337 也许你用错了方向

标签: mysql


【解决方案1】:

你可以试试

SELECT * 
FROM `tb2`
JOIN `tb1`
WHERE INSTR(`store_ids`, `tb2_id`) > 0

但最好不要将外键存储为用逗号分隔的 ID 列表。

【讨论】:

    【解决方案2】:

    你可以使用find_in_set

    select * from tb1 join tb2 on find_in_set(tb2_id ,tbl1_id)
    

    但正如我在之前的评论中提到的,最好重新设计你的桌子

    DEMO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 2015-01-13
      相关资源
      最近更新 更多