MySQL - 查询临时表以从表中检索 2 行
Posted
技术标签:
【中文标题】MySQL - 查询临时表以从表中检索 2 行【英文标题】:MySQL - Query a temp table to retrieve 2 rows from table 【发布时间】:2015-10-06 21:12:54 【问题描述】:感谢您花时间阅读我的问题。
我正在尝试组合来自 2 个表的数据,以便可以使用 php 将其呈现在网页上——我使用的是 WordPress 网站,因此表结构可能看起来很熟悉。
表格布局:
wp_3bpf9a_posts - 该表的每个“帖子”有 1 行,我需要此表以便查询特定类型的帖子,并获取日期。
wp_3bpf9a_postmeta - 每个帖子都有许多记录的表(有一个 ID 将两者链接在一起)。实际上,我需要每个 ID 的 2 行(多行)中的数据来完成我正在寻找的显示数据集。
我试图通过创建一个临时表将两个表之间的第一条记录连接在一起来完成此操作,然后我将返回并将临时表连接到我需要的第二条记录。我实际上使用 Toad 连接到 mysql DB,并且当我按顺序运行以下每个语句时,下面的代码可以工作。当我尝试运行整个事情时,我没有收到错误,但也没有得到任何结果,当我在我的 PHP 页面上尝试它时也是如此。我知道可能有更简单的方法可以做到这一点,但这是我从简单的 MySQL 查询中迈出的第一步。如果您能提供任何指导,我们将不胜感激,谢谢!
DROP TABLE IF EXISTS bookingTempTable;
CREATE TEMPORARY TABLE bookingTempTable AS
SELECT ID, post_title, post_name, meta_value
FROM `wp_3bpf9a_posts`
INNER JOIN `wp_3bpf9a_postmeta` ON `wp_3bpf9a_postmeta`.`post_id`=`wp_3bpf9a_posts`.`ID`
WHERE `post_type` LIKE 'booked_appointments' AND `post_title` LIKE '%October 9%' AND `wp_3bpf9a_postmeta`.`meta_key` LIKE 'slot_members';
SELECT *
FROM `wp_3bpf9a_postmeta`
INNER JOIN `bookingTempTable` ON `bookingTempTable`.`ID`=`wp_3bpf9a_postmeta`.`post_id`
WHERE `wp_3bpf9a_postmeta`.`meta_key` LIKE '_appointment_timeslot'
ORDER by `wp_3bpf9a_postmeta`.`meta_value` ASC;
【问题讨论】:
你的问题是什么? 对不起,我以为我复制了整个问题,但我只抓住了 SQL 本身。 我正在尝试将两个表连接在一起(使用临时表),这样我就可以从一个表中获取 2 条记录,并从一个数据集中的另一个表中获取 1 条记录。 感谢您的快速回复,我编辑了上面的“问题”并提供了更多详细信息。我只是在寻找一个原因,即如果我按顺序执行每个 SQL 语句会运行,但当我尝试一起执行它们时不会运行。此外,如果有更好的方法可以做到这一点,我会全力以赴。 【参考方案1】:您不需要临时表,只需使用wp_sbpf9a_postmeta
加入两次即可。
SELECT p.*, m1.meta_value AS slot_member, m2.meta_value AS appointment_timeslot
FROM wp_sbpf9a_posts AS p
JOIN wp_3bpf9a_postmeta AS m1 ON p.id = m1.post_id
JOIN wp_sbpf9a_postmeta AS m2 ON p.id = m2.post_id
WHERE p.post_type = 'booked_appointments'
AND p.post_title LIKE '%October 9%'
AND m1.meta_key = 'slot_members'
AND m2.meta_key = '_appointment_timeslot'
ORDER BY appointment_timeslot
【讨论】:
效果很好!谢谢!以上是关于MySQL - 查询临时表以从表中检索 2 行的主要内容,如果未能解决你的问题,请参考以下文章