2

選択操作で、col1、col2、および col3 の 3 つの列が指定されているとします。col2 と col3 は時間型です。結果をタイムスタンプ順に並べたい。各レコードのタイムスタンプは、col3 が null でない場合は col3 に等しく、それ以外の場合は col2 です。これを行う方法?

4

2 に答える 2

2

組み込み関数を使用しますifnull()

select
...
order by ifnull(col3, col2)

ifnull()null でない場合は最初のパラメーターを返し、それ以外の場合は 2 番目のパラメーターを返します。

于 2012-09-21T11:30:38.703 に答える
1

サブクエリを使用してそれを行うことができます。内部クエリでは、col3 が NULL かどうかを確認し、col3 または col2 を "my_time" として "選択" します。次に、外部クエリで、「my_time」で並べ替えます。

サブクエリの例:

SELECT <whatever>, IF (col3 IS NOT NULL, col3, col2) AS my_time FROM <table>

次に、外部クエリ:

SELECT * FROM (
    SELECT <whatever>, IF (col3 IS NOT NULL, col3, col2) AS my_time FROM <table>
) AS <temp_table> ORDER BY <temp_table>.my_time
于 2012-09-21T10:49:33.873 に答える