簡體   English   中英

MySQL-在一個查詢中使用動態表名稱

[英]MySql - using dynamic table names in one query

我有以下表格:

汽車

  • ID
  • 名稱
  • 顏色

腳踏車

  • ID
  • 名稱
  • number_of_gearshift

我需要在我的mysql數據庫中此表的中央索引表以及它們的唯一ID。 像這樣:

項目

  • ID
  • table_name

可以說,items-table中的id與對應表中的id相同:

項目

id | table_name
 1 | cars
 2 | cars
 3 | bicycles
 4 | cars

汽車

id | name        | color
 1 | Peugeot     | red
 2 | BMW         | green  
 4 | Nissan      | blue

腳踏車

id | name      | number_of_gearshift
 3 | Stevens   | 24

我的問題-以下情況:我有商品的ID(例如XXX)。 現在,我只想通過一個查詢就可以獲取此項的數據。 這樣的事情(我知道,那是行不通的):

SELECT table2.*
FROM (SELECT table_name FROM items WHERE id = XXX) AS table2

可能嗎?

使用可以使用動態sql查詢來實現此目的。

set @query = null;
set @id = 3;/*change according to requirement*/
SET @tn := (select `table_name` from items where id =  @id);

set @query = concat('select * from ',@tn,' where id = ',@id);

prepare stmt from @query;
execute stmt;
deallocate prepare stmt;

根據需要更改@id的值。

SQL小提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM