我是 SQL 新手。我想要一个返回具有多个共同列的值的查询
我有 t_table :
filename | start | stop
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
我想返回具有共同开始和停止列的文件名,名称类似于“%AAAA%”(前 2 行) CCCC% 具有相同的开始和结束,但名称不像 '%AAAA%
我试过这些答案 Find rows that have the same value on a column in MySQL但我无法得到预期的结果。与:
SELECT filename ,
start
FROM t_table
WHERE ( start IN ( SELECT start
FROM t_table
GROUP BY start
HAVING COUNT(*) > 1 ) )
AND ( filename LIKE '%AAAA%' );
我都得到了...
filename | start | stop
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
代替:
filename | start | stop
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBB | 2016-12-24 00:00:00 | 2016-01-03 00:00:00
你能帮帮我吗?
最佳答案
SELECT t1.filename,
t1.start,
t1.stop
FROM t_table t1
INNER JOIN
(
SELECT start, stop -- this subquery identifies all start, stop
FROM t_table -- pairs for which 2 or more records share
GROUP BY start, stop -- those values
HAVING COUNT(*) > 1
) t2
ON t1.start = t2.start AND
t1.stop = t2.stop
WHERE t1.filename LIKE '%AAAA%' -- filename contains 'AAAA'
此处演示:
SQLFiddle
关于mysql - 具有相同多列的 SQL 搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39506026/