Mysql 仅当满足where条件时才选择最后一行
我有一个邮件专栏,我正试图弄清楚如何在“已发送”文件夹中显示邮件 我运行以下查询:Mysql 仅当满足where条件时才选择最后一行,mysql,Mysql,我有一个邮件专栏,我正试图弄清楚如何在“已发送”文件夹中显示邮件 我运行以下查询: SELECT `text`, `created` FROM `messages` WHERE `status` = 1 ORDER BY `created` DESC LIMIT 1 我想引入一个条件,以便仅当status=1的最后一行也有user\u from=$user(如果最后一行有user\u to=$user,则不应返回任何结果) 我的查询应该是什么?您可以使
SELECT
`text`,
`created`
FROM
`messages`
WHERE
`status` = 1
ORDER BY `created` DESC
LIMIT 1
我想引入一个条件,以便仅当status=1
的最后一行也有user\u from=$user
(如果最后一行有user\u to=$user
,则不应返回任何结果)
我的查询应该是什么?您可以使用
子查询
select `text`, `created` from T1
( SELECT
`text`,
`created`
FROM
`messages`
WHERE
`status` = 1
ORDER BY `created` DESC
LIMIT 1) T1
where `user_from` = $user and `user_to` != $user
如果我正确理解了你的问题,你想这样做吗:
SELECT
`text`,
`created`
FROM
`messages`
WHERE
`status` = 1
AND `user_from` = $user
AND `user_to` != $user
ORDER BY `created` DESC
LIMIT 1
当然,您需要用字符串替换
$user
,或者使用准备好的语句将变量插入查询中 选择状态为1的最新消息,然后将其用作嵌套查询,并检查是否输出这一行结果的条件:
select `text`, `created`
from
(
SELECT
`text`,
`created`,
user_from,
user_to
FROM
`messages`
WHERE
`status` = 1
ORDER BY `created` DESC
LIMIT 1
) t
where (user_from = $user)
and (not (user_to = $user))
这将返回由
$user
发送的最新消息。。我需要它,以便仅当发送的最后一条消息是由$user
发送的时才返回结果(如果最后一条消息不是由$user发送的,则不应返回任何内容)