[英]MySql - using dynamic table names in one query
我有以下表格:
汽車
腳踏車
我需要在我的mysql數據庫中此表的中央索引表以及它們的唯一ID。 像這樣:
項目
可以說,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
的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.