[英]How to avoid statement duplication in where clause in MySQL?
Is there any way to use an alias as a substitute of a single result query in WHERE
clause to avoid statement duplication in the following query?有没有办法在
WHERE
子句中使用别名代替单个结果查询来避免以下查询中的语句重复?
SELECT *
FROM (
SELECT *
FROM SomeTable T
WHERE created <= (CASE WHEN
(SELECT created
FROM SomeTable
WHERE sales > 0
ORDER BY created DESC
LIMIT 1)
IS NULL THEN NOW() ELSE
(SELECT created
FROM SomeTable
WHERE sales > 0
ORDER BY created DESC
LIMIT 1)
END)
ORDER BY created DESC LIMIT 10
) as inverseOrder
ORDER BY created ASC;
Is it possible to modify that query to avoid the statement duplication.是否可以修改该查询以避免语句重复。 Ie something like that?
即类似的东西?
SELECT *
FROM (
SELECT *
FROM SomeTable T
WHERE created <= someAliasssssssss
IS NULL THEN NOW() ELSE someAliasssssssss
ORDER BY created DESC LIMIT 10
) as inverseOrder
ORDER BY created ASC;
You can use COALESCE()
:您可以使用
COALESCE()
:
SELECT *
FROM (
SELECT *
FROM SomeTable T
WHERE created <= COALESCE(
(SELECT created
FROM SomeTable
WHERE sales > 0
ORDER BY created DESC
LIMIT 1), NOW())
ORDER BY created DESC LIMIT 10
) as inverseOrder
ORDER BY created ASC;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.