0

私は2つのテーブルを持っています。Table_1 には、table_2 から取得した 3 つの外部キーがあります。ID が table_1 の特定の行の val_1、val_2、および val_3 の値と等しい table_2 からすべての行を選択する必要があります。例えば:

SELECT val_1, val_2, val_3 from table_1 WHERE id = 1;

そして、最初のクエリ実行の結果を使用します

SELECT name FROM table_2 WHERE id IN (101, 102, 103);

1回のクエリでそれを行う方法はありますか?

表1

ID 名前 val_1 val_2 val_3
1 アイテム1 101 102 103
2 アイテム2 104 105 106

テーブル_2

ID 名前
101 サブアイテム1
102 sub_item2
103 sub_item3
104 sub_item4
105 sub_item5
106 sub_item6
4

2 に答える 2

2

val_1それを行う 1 つの方法は、を連結val_2val_3、サブクエリで を使用することFIND_IN_SET()です。

SELECT name 
FROM table_2 
WHERE FIND_IN_SET(
        id, 
        (SELECT CONCAT_WS(',', val_1, val_2, val_3) FROM table_1 WHERE id = 1)
      );

または、テーブルを結合します。

SELECT t2.name 
FROM table_2 t2 INNER JOIN table_1 t1
ON t2.id IN (t1.val_1, t1.val_2, t1.val_3)
WHERE t1.id = 1;

デモを参照してください。

于 2021-08-05T20:05:28.423 に答える