【问题标题】:Select values with multiple limit选择具有多个限制的值
【发布时间】:2020-09-26 15:06:54
【问题描述】:

我想在同一列中使用多个模式进行 mysql 查询。但是每个模式我只想要最旧的条目

我想搜索每个模式的最旧条目(test1、test2、test3、test4)

如果我单独搜索,我会使用这个:

SELECT * FROM database WHERE name LIKE 'test1' ORDER BY time DESC LIMIT 1

我的模式示例是:

test1
test2
test3
test4

排序应该是从新到旧

【问题讨论】:

  • 您想要完全匹配还是部分匹配?
  • 与模式完全匹配

标签: mysql


【解决方案1】:

如果要搜索 'test1''test2''test3''test4' 的完全匹配项,则可以使用运算符 IN(不需要 LIKE)。
NOT EXISTS

SELECT t.* FROM tablename t 
WHERE t.name IN ('test1', 'test2', 'test3', 'test4') 
AND NOT EXISTS (
  SELECT 1 FROM tablename
  WHERE name = t.name AND time > t.time
);

使用相关子查询:

SELECT t.* FROM tablename t 
WHERE t.name IN ('test1', 'test2', 'test3', 'test4') 
AND t.time = (SELECT MAX(time) FROM tablename WHERE name = t.name);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-18
    • 2017-10-10
    • 1970-01-01
    • 2015-04-12
    • 2015-10-17
    • 2017-01-23
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多