【发布时间】:2017-06-05 12:39:40
【问题描述】:
我有一个问题:
我想选择 user1 或 user2 是特定用户 ID 的所有 babble-rooms。 (SELECT * FROM babble WHERE user1 = '$user' OR user2 = '$user')
但我还想获取 babble_messages 的最后一个条目,其中 babble ID 等于 babble_id。
我的数据库结构:
表唠叨:
身份证 |用户1 |用户2 |已创建表格babble_messages:
身份证 |发件人 | babble_id |创建 |见过|留言
我的尝试是:
SELECT
*
FROM
babble
LEFT JOIN (
SELECT
babble_messages.ID AS last_id,
babble_messages.sender AS last_sender,
babble_messages.babble_id,
babble_messages.created AS last_created,
babble_messages.seen AS last_seen,
babble_messages.message AS last_message
FROM
babble_messages
ORDER BY
created DESC LIMIT 1
) babble_messages ON
babble.ID = babble_messages.babble_id
WHERE
user1 = '$user' OR user2 = '$user'
ORDER BY
last_created DESC
这将为 LEFT JOIN 表输出空条目。我认为这是因为我在子查询中选择了 babble_messages 的最后一个条目...... 我试图在子查询中添加一个 WHERE 标记,但这会引发错误:
SELECT
*
FROM
babble
LEFT JOIN (
SELECT
babble_messages.ID AS last_id,
babble_messages.sender AS last_sender,
babble_messages.babble_id,
babble_messages.created AS last_created,
babble_messages.seen AS last_seen,
babble_messages.message AS last_message
FROM
babble_messages
WHERE
babble.ID = babble_messages.babble_id*
ORDER BY
created DESC
LIMIT
1
) babble_messages ON
babble.ID = babble_messages.babble_id
WHERE
user1 = '$user' OR user2 = '$user'
ORDER BY
last_created DESC
在子查询中 mysql 不知道“babble.ID”。 如何只选择 babble_messages 的最后一个条目?
当然我可以使用多个请求,但我只想发出一个请求,因为它更快。
我希望这是足够的信息。 :D 感谢阅读并希望回答:)
祝你有个愉快的一天
【问题讨论】:
-
您能更好地格式化您的查询吗?见How do I format my code blocks?
-
抱歉这些问题,我希望现在更好。
-
提示 1:永远不要使用
SELECT *。提示 2:在使用多个表的情况下,始终限定列名,例如babble.user1。 -
I hope that it's better now.哈哈,因为我改了所以更好
标签: php mysql select left-join limit