从第二个表存储过程mysql中仅通过其ID选择一个图像
Posted
技术标签:
【中文标题】从第二个表存储过程mysql中仅通过其ID选择一个图像【英文标题】:Select only one image by its id from second table Stored procedure mysql 【发布时间】: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
【参考方案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
子句是必需的。以上是关于从第二个表存储过程mysql中仅通过其ID选择一个图像的主要内容,如果未能解决你的问题,请参考以下文章
MySQL从一个表中选择行,第二个表中有多行,并在所选行中获取多行数组