【问题标题】:Select only one image by its id from second table Stored procedure mysql从第二个表存储过程mysql中仅通过其ID选择一个图像
【发布时间】:2020-07-20 08:02:28
【问题描述】:
Table 1

id    name  value
1     test  22
2     test2  23


Table 2

id  tb_1  pic
1    1    img.png
2    1    img2.png
3    2    img3.png

我只想从第二张桌子中选择一张图片

试过

SELECT a.*, b.pic
  FROM tbl_one a
 INNER JOIN tbl_two f
    ON f.tbl_1 = (SELECT tbl_1
                    FROM tbl_two f2
                   WHERE f2.tbl_1 = a.id                  
                   GROUP BY f2.id 
                   LIMIT 1)

如何根据 tbl_1 id 只获取一张图片?

【问题讨论】:

  • 无论何时使用LIMIT,您都需要一个ORDER BY 子句。
  • 您的查询无法语法 - 没有表别名为 b 并且没有列 tbl_1

标签: mysql sql stored-procedures


【解决方案1】:

我会建议一个相关的子查询:

SELECT a.*,
       (SELECT f2.pic
        FROM tbl_two f2
        WHERE f2.tbl_1 = a.id                  
        LIMIT 1
       ) pic
FROM tbl_one a;

您可以在子查询中使用ORDER BY 来选择哪个您想要的pic——比如最早的、最近的或随机的。

【讨论】:

    【解决方案2】:

    试试这个

    LEFT JOIN tbl_two t2 ON (t2.id = (SELECT MIN(t2_.id  ) 
                                        FROM tbl_two t2_ 
                                       WHERE (t2_.tb_1   = a.id ) 
                                       LIMIT 1) )
    

    【讨论】:

    • 我认为ORDER BY 子句和LIMIT 子句是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 2010-12-10
    • 2012-04-01
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多