1

両方のテーブルから MIN 値を取得しようとしています (1 つの戻り値)。

次のmysql構造+データ:

table_master

`ID` (Unique) | `Amount`

1 | 5.8
2 | 22.1
3 | 44.22

table_variants

`table_master_ID` | `Amount`

1 | 4.11
1 | 5.12
1 | 
1 |
2 | 9.22
3 | 

このクエリでは:

SELECT table_master.Amount, table_variants.Amount 
FROM table_master 
LEFT JOIN table_variants ON table_master.ID = table_variants.table_master_ID 
WHERE table_master.ID = 1

私はこのようなものを得る:

5.8 | 4.11
5.8 | 
5.8 | 5.12
...

Amountここで、両方のテーブル の MIN 値が必要です。IDoftable_masterは一意で、data intable_variantsはオプションです。

これどうやってするの?私は試してみましたが、成功MIN()しませんでした。CASE()

ヒントはありますか?

ティア!

4

4 に答える 4

3
SELECT MIN(t.Amount) FROM
(SELECT Amount FROM table_master WHERE ID = 1
 UNION SELECT Amount FROM table_variants WHERE table_master_ID = 1) AS t

MySQL UNION 構文

SELECT MIN(LEAST(table_master.Amount, table_variants.Amount))
FROM table_master 
LEFT JOIN table_variants ON table_master.ID = table_variants.table_master_ID 
WHERE table_master.ID = 1

MySQL LEAST 関数

于 2012-05-22T07:32:16.323 に答える
1

試す

SELECT MIN( CASE WHEN table_master.Amount<= table_variants.Amount AND table_variants.Amount IS NULL THEN table_master.Amount ELSE table_variants.Amount END) 
FROM table_master 
LEFT JOIN table_variants ON table_master.ID = table_variants.table_master_ID 
WHERE table_master.ID = 1

これは、それがどのように機能するかを示しています

于 2012-05-22T07:33:39.290 に答える
0

これを試して -

SELECT LEAST(MIN(a.amount), MIN(b.value)) 
FROM table_master a, table_variants b
WHERE a.id = b.table_master_ID
AND a.id = 1;
于 2012-05-22T07:36:07.307 に答える
0

UNION を使用してこれを実現できます。

SELECT  "min from table1", MIN( Amount ) FROM table_master
UNION 
SELECT  "min from table2", MIN( Amount ) FROM table_variants
于 2012-05-22T07:34:24.997 に答える