mysql - 如何运行 SELECT 并将多个列合并为主行中的附加列?

标签 mysql

我设置了两个表。第一个表包含公寓列表,第二个表包含照片列表,每张照片包含对公寓列表 ID 的引用。

我想做的是拉下所有公寓列表并将与每个列表关联的前两张照片组合成一行。

为简单起见,假设 apartment 表中的行是:

post_id,<br>
title,<br>
description

photos 表中的行是:

photo_id,<br>
post_id,<br>
path

执行 SELECT * FROM apartments 时我想要的结果是:

post_id, <br>title,<br> description,<br> path1,<br> path2

path1path2 是照片表中的第一张照片和第二张照片,其 post_id 引用了 post_id正在检索的当前行。

我已经尝试了所有类型的连接,但似乎无法找到适合我正在尝试做的事情的连接。任何人都知道我如何完成这项工作?

谢谢!!

最佳答案

您可以在照片表上进行 2 个子查询,以选择第一张照片和与刚刚选择的第一张照片不同的第一张照片。

<罢工> 像这样的东西:

SELECT 
a.*, 
(SELECT path FROM photo p1 WHERE p1.post_id = a.post_id LIMIT 0, 1) AS path1,
(SELECT path FROM photo p2 WHERE p2.post_id = a.post_id AND p2.path != a.path1 LIMIT 0, 1) AS path2
FROM apartment a

我这里没有 mysql 来测试它,所以查询可能需要一些调整,但它给出了总体思路。

编辑:同样的想法,替代方法(使用限制来获取第二条记录):

SELECT 
a.*, 
(SELECT path FROM photo p1 WHERE p1.post_id = a.post_id ORDER BY p1.path LIMIT 0, 1) AS path1,
(SELECT path FROM photo p2 WHERE p2.post_id = a.post_id ORDER BY p2.path LIMIT 1, 1) AS path2
FROM apartment a

关于mysql - 如何运行 SELECT 并将多个列合并为主行中的附加列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657734/

相关文章:

mysql - sql查询从记录中删除 "/"斜杠

mysql - 存储 MySQL GUID/UUID

php - 尝试在 wordpress 自定义页面中实现 jQuery 以进行搜索自动完成但不起作用

mysql - 如何在未输入任何内容时获取 MySQL 查询并返回所有结果

javascript - 在 Backbone.JS 中创建不更新 ID

php - 如何从不同的MySQL表中删除所有相关记录

MySQL 连接,其中一个值可以是可选的

php - Yii2:mysql 查询以获取有关待处理作业的提醒?

mysql - sql中多个相互关联的循环

mysql - 在 MySQL 查询中计算百分比