我正在编写一个查询来返回一个对象中的帖子 ID 和时间戳。我有帖子 ID 和时间戳返回,但时间戳键是 post_id,它应该是时间戳。另外,它将它存储为数组中的单个项目,我希望它与 post_id 组合在一起。这是我的sql语句:
$meta_key = '_birs_client_id';
$meta_value = $client_id[0]->post_id;
$adjusted_time = strtotime("+1 day");
$timestamp_meta_key = '_birs_appointment_timestamp';
$sql = "SELECT post_id FROM wp_habitera_postmeta WHERE meta_key = %s AND meta_value = %d
UNION
SELECT meta_value FROM wp_habitera_postmeta WHERE meta_key = %s";
$appointments = $wpdb->get_results($wpdb->prepare($sql, $meta_key, $meta_value, $timestamp_meta_key));
这是我从 sql 语句返回的示例子集:
[19] => stdClass Object
(
[post_id] => 996
)
[20] => stdClass Object
(
[post_id] => 999
)
[21] => stdClass Object
(
[post_id] => 1002
)
[22] => stdClass Object
(
[post_id] => 1398370500
)
[23] => stdClass Object
(
[post_id] => 1398284100
)
[24] => stdClass Object
(
[post_id] => 1398196800
)
这是我想要获取的格式:
[18] => stdClass Object
(
[post_id] => 993
[timestamp] => 1398370500
)
有人可以告诉我如何获得这种格式吗?
编辑
这是我正在使用的数据库的图片,应该有助于澄清:
http://i59.tinypic.com/10sgml3.png
我感兴趣的两行是时间戳和约会 ID。时间戳列“1000”之前的列是与帖子 id 列“1000”之后的列再次匹配的帖子 ID。
最佳答案
编辑>我最后的答案是垃圾,经过编辑以尝试给出问题的答案。
UNION 不会帮助您解决问题:从 DDBB 检索到的所有值都会连接在一起,第一个查询将检索字段 post
的值,第二个查询将检索值的时间戳
,但通过 UNION,您可以告诉 MySQL 将它们放在同一字段中。您需要做的是将表与其本身JOIN
以获得您想要的不同字段的值,但为此您需要建立行之间的关系。如果不知道表的结构及其所包含的数据,我无法说出该关系是什么,但是如果您在下面的查询中编写该关系规则,您将获得您想要的查询:
SELECT post_id, meta_value as timestamp
FROM wp_habitera_postmeta wphp1
INNER JOIN wp_habitera_postmeta wphp2
ON ( RELATION_RULE_BETWEEN_ROWS_ON_YOUR_TABLE )
WHERE meta_value = %d
关于mysql - SQL语句返回格式错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505114/