"Test">表结构
- 编号
- 价值
- 项标识
我想检查在表"测试">中是否有一个itemID= '123' 和值= '456' 的结果,以及它是否是最后添加的结果 ORDER BY id DESC,我错过了这段代码中的一些东西:
SELECT * FROM Test WHERE itemID = '123' AND value= '456' ORDER BY id DESC LIMIT 1
谁能帮忙?
检查表
描述Test
中是否有带有itemID = '123'
和value = '456'
的结果,以及它是否是最后添加的结果 按 ID 排序
您的要求可以按以下方式翻译:
select *
from test t
where itemID = 123 and value = 456
and not exists (
select 1
from test t1
where t1.id > t.id
)
NOT EXISTS
条件可确保选择的记录是最新的,id
明智。
如果不满足要求,查询将返回一个空结果集。
另一种表达方法是使用相关的子查询来获取最新的 id:
select *
from test t
where
itemID = 123
and value = 456
and id = (select max(id) from test t)
在 where 子句中使用 Sub 查询,您可以找到它。
SELECT t.* FROM `Test` as t WHERE `itemID` = 123 AND `value` = 456 AND `id` =(SELECT max(`id`) FROM Test);
SELECT (SELECT value
FROM Test
WHERE itemID = '123'
ORDER BY id DESC LIMIT 1) = '456' AS it_matches;
结果将是以下可能性之一:
- 如果最后一个"值"是 456,则为 1,或者
- 如果最后一个"值"是另一个非空值,则为 0,或者
- 如果没有 ItemID = 123 的行或最后一行的"值"列为 null,则为 NULL。