将用于检索值以进行比较的子查询合并到一个查询中?
Combine subqueries used to retrieve values for comparison into a single query?
我有一个这样的 SQL 查询:
SELECT COUNT(*) AS count_value FROM submissions WHERE username = (
SELECT username FROM submissions WHERE id = '1'
) AND number = (
SELECT number FROM submissions WHERE id = '1'
) AND tstmp < (
SELECT tstmp FROM submissions WHERE id = '1'
);
请注意我如何使用此查询来查找具有相似列值但时间戳值小于行号 1 的所有行。
这对我有用,但我想知道,有没有办法将三个子查询合并为一个?它们都是来自同一个 table 的 select 信息,所以我认为这可能是可能的,但我不知道该怎么做。
我认为您可以将子查询合并为一个,并将其用作联接中的派生 table。请试试这个:
SELECT COUNT(*) AS count_value
FROM submissions s
JOIN (
SELECT username, number, tstmp
FROM submissions WHERE id = 1
) o ON s.number = o.number AND s.username = o.username AND s.tstmp < o.tstmp
我有一个这样的 SQL 查询:
SELECT COUNT(*) AS count_value FROM submissions WHERE username = (
SELECT username FROM submissions WHERE id = '1'
) AND number = (
SELECT number FROM submissions WHERE id = '1'
) AND tstmp < (
SELECT tstmp FROM submissions WHERE id = '1'
);
请注意我如何使用此查询来查找具有相似列值但时间戳值小于行号 1 的所有行。
这对我有用,但我想知道,有没有办法将三个子查询合并为一个?它们都是来自同一个 table 的 select 信息,所以我认为这可能是可能的,但我不知道该怎么做。
我认为您可以将子查询合并为一个,并将其用作联接中的派生 table。请试试这个:
SELECT COUNT(*) AS count_value
FROM submissions s
JOIN (
SELECT username, number, tstmp
FROM submissions WHERE id = 1
) o ON s.number = o.number AND s.username = o.username AND s.tstmp < o.tstmp