1

次のようなクエリがあるとします。

SELECT t1.name, t2.likes
FROM table_1 t1
LEFT JOIN table_2 t2 ON t1.name = t2.name

その左結合をどのように変更して、次のようにすることができますか。

SELECT likes FROM table_2 WHERE name = [name from table 1] ORDER BY likes ASC

サブクエリを作成しようとしましたが、サブクエリの内部でサブクエリの外部(名前など)から変数を使用できないため(名前は定数ではないため、クエリの結果セットとして機能しませんでした)、機能しませんでした。複数になります)。

それは可能ですか?

編集:テーブルは次のようになります:

表1:

+------+--------+
| id   |  name  |
+------+--------+
|  0   |  cat   |
|  1   |  dog   |
+------+--------+

表2:

+------+--------+---------+
| id   |  name  |  likes  |
+------+--------+---------+
|  0   |  cat   |   23    |
|  1   |  cat   |   2     |
|  2   |  cat   |   53    |
|  3   |  dog   |   25    |
|  4   |  dog   |   12    |
+------+--------+---------+

だから、私が欲しいのは:

+--------+---------+
|  name  |  likes  |
+--------+---------+
|  cat   |   2     |
|  dog   |   12    |
+--------+---------+
4

2 に答える 2

5
SELECT 
    t1.name, t2.likes
FROM table_1 t1
LEFT JOIN (
    SELECT
    name,
    MIN(likes) as likes 
    FROM table_2 
    GROUP BY name
) as t2 ON t1.name = t2.name

サブクエリでも実行できますが、遅くなると思います:

SELECT 
    t1.name,
    (SELECT MIN(likes) FROM table_2 WHERE table_2.name = t1.name)
FROM table_1 t1
于 2012-07-29T00:14:12.493 に答える
2

likes名前ごとの最小値:

SELECT   name, MIN(likes) AS likes
FROM     table_2
GROUP BY name

についてさらに情報が必要な場合は、上記のクエリをサブセレクトに組み込んでテーブルにname結合します。table_1

SELECT a.name, b.likes
FROM   table_1 a
LEFT JOIN
(
    SELECT   name, MIN(likes) AS likes
    FROM     table_2
    GROUP BY name
) b ON a.name = b.name
于 2012-07-29T00:17:30.533 に答える