2

まったく同じ列名を持つ約 4 つの異なるテーブルがあります。私がやりたいことは、日付順に並べられたこれらすべてのテーブルから上位 4 つのレコードを選択することです (日付はすべてが共有する列の 1 つであるため)。

構文の問題やあいまいなレコードなど、誤ったステートメントが表示され続けます。

基本的に、私のステートメントは次のようになります。

SELECT TOP 4 date, link, anchor, thumb FROM archive1, archive2, archive3, archive4 ORDER BY date DESC

明白なことを述べると、私はこのすべてのものに不慣れです。ご協力いただきありがとうございます。

4

1 に答える 1

7

すべてのテーブルのユニオンを生成し、最後の 4 つを取得するように並べ替える必要があります。

SELECT TOP 4 date, link, anchor, thumb 
FROM
(
  SELECT date, link, anchor, thumb 
    FROM archive1
   UNION ALL
  SELECT date, link, anchor, thumb 
    FROM archive2
   UNION ALL
  SELECT date, link, anchor, thumb 
    FROM archive3
   UNION ALL
  SELECT date, link, anchor, thumb 
   FROM archive4 
) archive
ORDER BY date DESC

4 つのレコードしか取得しないため、各クエリに TOP 4 句を ORDER BY date DESC と共に追加して処理を高速化できます。

于 2012-04-13T22:07:14.180 に答える