Как я могу перегрузить оператор Node вне структуры Node, но внутри MyStruct?
blockquote>Вы не можете этого сделать. Любые операторы перегрузки, определенные вне
Node
и внутриMyStruct
, рассматриваются как оператор перегрузки изMyStruct
. Это гдеnamespace
отличается отstruct
.Вы можете использовать:
struct MyStruct { struct Node { int a; }; }; MyStruct::Node operator+(MyStruct::Node const& A, MyStruct::Node const& B) { MyStruct::Node ret; ret.a = A.a + B.a; return ret; }
Этот скрипт работает в SQLServer. Вы должны быть в состоянии извлечь оператор select и запустить его в MySQL.
DECLARE @Messages TABLE (Message VARCHAR(10), Created DATETIME)
DECLARE @Interval FLOAT
-- Interval is 1 day.
SET @Interval = 1
-- These should be in result
INSERT INTO @Messages VALUES ('Message1', GetDate())
INSERT INTO @Messages VALUES ('Message2', GetDate()-1)
-- These should not be in result
INSERT INTO @Messages VALUES ('Message3', GetDate()-3)
INSERT INTO @Messages VALUES ('Message4', GetDate()-5)
SELECT m1.Message, m1.Created
FROM @Messages m1
INNER JOIN @Messages m2 ON m2.Created <= m1.Created + @Interval
AND m2.Created >= m1.Created
AND m2.Message <> m1.Message
UNION ALL SELECT m2.Message, m2.Created
FROM @Messages m1
INNER JOIN @Messages m2 ON m2.Created <= m1.Created + @Interval
AND m2.Created >= m1.Created
AND m2.Message <> m1.Message
ORDER BY Created
Я полагаю, вы думаете, что это слишком сложно (но опять же, может быть, я неправильно понял требование?)
Выбирает все сообщения, созданные за 30 секунд до определенного сообщения: