0
SELECT * 
FROM 
(
    SELECT case_id,diagnosis_title,updated 
    FROM tbl_case 
    order by updated desc 
) as table1

UNION

select * 
FROM 
(
    select image_id,image_title,updated 
    from tbl_image 
    order by updated desc 
) as table2

混合順序でレコードを表示する方法。現在tbl_Case、最初に表示されているレコードtbl_imageと2番目のセクションに表示されているレコード。

出力をミックスしたい。 ORDER BY両方のテーブルで機能するはずです。

4

3 に答える 3

5

それらの外部選択を行っている理由は何ですか *? すでに選択したものをすべて再選択するだけなので、あまり意味がありません。

mysql ユニオンでは、結果セット全体を次のように順序付けます。

(SELECT case_id, diagnosis_title, ... FROM ...)
UNION
(SELECT image_id, image_title, ... FROM ...)
ORDER BY ...

上記のようにブラケットを配置すると、order by は、個々のクエリの結果を個別に並べ替えるのではなく、両方の結果セットのすべてのレコードをまとめて並べ替えます。

于 2012-08-15T16:36:04.433 に答える
1

クエリを単純化してみてください。

    SELECT case_id,diagnosis_title,updated
    FROM tbl_case 
    UNION
    select image_id,image_title,updated
    from tbl_image 
    ORDER BY updated desc
于 2012-08-15T16:39:29.287 に答える
0

これを行うことができます(データ型について推測しているだけです)

CREATE TEMPORARY TABLE TempTable
    (id int, title varchar(100), updated tinyint(1));

INSERT TempTable
SELECT case_id, diagnosis_title, updated  FROM tbl_case ORDER BY updated DESC;
INSERT TempTable
SELECT image_id, image_title, updated FROM tbl_image ORDER BY updated DESC;

SELECT * FROM TempTable;

明らかに、これはユニオンの代わりに一時テーブルを使用して、あなたが求めていると思うものを達成します。

于 2012-08-15T16:57:52.933 に答える