4

1 つの SQL を使用して、同じテーブル内の 2 つの異なる行からデータを選択しています。

"id"    "borrowMax" "holder"    "category"  "country"
"1"     "2"         "0"         "3"         "US"
"2"     "0"         "1"         "10"        "US"

私がやろうとしていることはこれでうまくいきます。

select id, holder from mytable where id = 2
select borrowMax from mytable where id = (
        holder from the above select, in this case it's 1
) and category = 3

オンラインで例を見た後の私が行う方法は

SELECT col1.id, col1.holder, col2.borrowMax
FROM collection_db col1
JOIN collection_db col2
ON col2.holder = col1.id
WHERE col1.id = 2 //Here, 2 is the value supplied by me
AND col2.category = 3

確かに、これはうまくいきます。しかし、自分で組み立てたものなので、疑問があります。このようなことをどのようにyouしますか?私は正しい軌道に乗っていますか?(私はそうではないと確信しています)。

4

3 に答える 3

3

これには、テーブル エイリアスを使用することもできます。

select t1.id, t1.holder, t2.borrowMax from mytable t1, mytable t2 where t1.id = t2.holder
于 2013-06-21T16:59:16.510 に答える
1

あなたのようなユースケースでは、ネストされた select ステートメントを使用します。JOIN 操作は使用されず、既にフィルター処理された一連の結果に対する選択クエリと、論理的に一貫性のあるコードのみが使用されます。

SELECT borrowmax, holder, id FROM mytable WHERE 
  id = (SELECT holder FROM mytable WHERE id = 2 )
    AND category = 3
于 2013-06-21T19:14:56.060 に答える
0

インドネシアの 2000 年と 2010 年の人口の違いは何ですか? 表の列:

country STRING
population  NUMBER
year    NUMBER

これは、私が探していた結果をもたらしたクエリです。

SELECT b.country,
(b.population - a.population) 
AS diff_population
  FROM population_years a
  JOIN population_years b ON b.country = a.country
WHERE b.country = 'Indonesia'
  AND a.year = 2000
  AND b.year = 2010;
于 2020-09-25T18:48:05.507 に答える