基本上資料表1的資料,未正規劃無法實現你要的資料:
資料表一應改成
欄位A 欄位B
index1 1
index1 2
index1 3
index2 2
index2 3
index3 4
SQL語法:Select 資料表2.欄位B From 資料表1
Where 資料表1.欄位B=資料表2.欄位A
And 資料表1.欄位A='index1'
問:
請問這是有辦法實現的嗎?
還是必須分開建立資料呢?
答:
可以實現
下面是我照你的需求寫的範例,但要注意資料量一大,就會有效能問題
到時候需要調教
--------------建立表格----------------
CREATE TABLE 資料表1 (
欄位A VARCHAR(20),
欄位B VARCHAR(20));
INSERT INTO 資料表1 VALUES
('index1', '1,2,3'),
('index2', '2,3'),
('index3', '4');
CREATE TABLE 資料表2 (
欄位A VARCHAR(20),
欄位B VARCHAR(20));
INSERT INTO 資料表2 VALUES
('1', 'JOE'),
('2', 'ANNY'),
('3', 'ZOE'),
('4', 'AMY');
CREATE TABLE numbers (
n INT PRIMARY KEY);
INSERT INTO numbers VALUES (1),(2),(3),(4),(5),(6);
--------------測試結果----------------
select T200.欄位A,T100.欄位A,T100.欄位B
from 資料表2 T100
left join (
SELECT
資料表1.欄位A,
SUBSTRING_INDEX(SUBSTRING_INDEX(資料表1.欄位B, ',', numbers.n), ',', -1) 欄位B
FROM numbers
INNER JOIN 資料表1 ON CHAR_LENGTH(資料表1.欄位B)
-CHAR_LENGTH(REPLACE(資料表1.欄位B, ',', ''))>=numbers.n-1
) T200 on T100.欄位A = T200.欄位B
建議你去找 '關連式資料庫' 和 'sql' 相關的書來看,一般教 mysql 的書應該就可以了
sql 要特別看 join 那個章節
恩...我這邊沒mysql資料庫可以試
但我印象mysql是可以接受這樣的語法..(MSSQL要用CharIndex方式)
select * from 資料表2
where 資料表2.欄位A in(select 資料表1.欄位B from 資料表1 where 資料表1.欄位A = 'index1')
你可以試試...0.0