1
に書き込み/読み出しれていないMySQLの変数は、私はテーブルを持っている:次のように各行
time datetime
私はちょうどそのテーブルの行を選択する2つの情報を与える:その行に存在する時間と時間を前の行に表示されるので、一連の時間枠を表示できます。たとえば、このレコードを使用して:
2017-07-01 20:00:00
2017-07-01 07:00:00
2017-04-04 23:52:00
すると、次の時間窓を返します:
2017-07-01 20:00:00 - null
2017-07-01 07:00:00 - 2017-07-01 20:00:00
2017-07-01 20:00:00 - 2017-04-04 23:52:00
でも、私は、変数を使用して最初の変数を選択し、それぞれの行でそれを設定し、定義することができることについて次の例のように時間窓:変数が何らかの形で設定されているが、最初の実行で、それは単純に次のような結果を提供したときに、この作品
SELECT @END_DATE date_time_to, @END_DATE := date_time date_time_from FROM (
SELECT cast('2017-07-01 20:00:00' as DATETIME) AS date_time
UNION
SELECT cast('2017-07-01 07:00:00' as DATETIME) AS date_time
UNION
SELECT cast('2017-04-04 23:52:00' as DATETIME) AS date_time
) a ORDER BY date_time desc;
:
+--------------+---------------------+
| date_time_to | date_time_from |
+--------------+---------------------+
| NULL | 2017-07-01 20:00:00 |
| NULL | 2017-07-01 07:00:00 |
| NULL | 2017-04-04 23:52:00 |
+--------------+---------------------+
私は単に変数にnullを設定した場合(SET @END_DATE := NULL
)して、再試行してください私が取得:
+---------------------+---------------------+
| date_time_to | date_time_from |
+---------------------+---------------------+
| NULL | 2017-07-01 20:00:00 |
| 2017-07-01 20:00:00 | 2017-07-01 07:00:00 |
| 2017-07-01 07:00:00 | 2017-04-04 23:52:00 |
+---------------------+---------------------+
私が望む結果であるが、私は自分のアプリケーションにそれを使用するたびに、私はそうでありません変数が設定されていて、最初のカラムで結果が常に得られます。ここで間違っていますか?
nice!それはうまくいったが、なぜそれはそれのようなものか?私はその行動を期待していませんでした。 –
ある種の最適化。ドキュメントには、同じ変数を同じ 'SELECT'リストに読み書きすることに依存できないという警告があります。これはおそらくこれを可能にします。 – Barmar