如果他們的 id 在另一個表(組)的序列化資料中,我想從一個表(人)中獲取值。
在表組中,我有這一行,其中包含存盤的序列化資料:
a:18 {
i:0;s:1:"7";
i:1;s:2:"13";
i:2;s:2:"14";
i:3;s:2:"16";
i:4;s:2:"28";
i:5;s:2:"42";
i:6;s:2:"46";
i:7;s:2:"79";
i:8;s:2:"81";
i:9;s:2:"94";
i:10;s:3:"149";
i:11;s:3:"219";
i:12;s:3:"234";
i:13;s:3:"264";
i:14;s:3:"266";
i:15;s:3:"270";
i:16;s:3:"273";
i:17;s:3:"285";
}
這里轉換為陣列,所以更容易查看
array (
0 => '7',
1 => '13',
2 => '14',
3 => '16',
4 => '28',
5 => '42',
6 => '46',
7 => '79',
8 => '81',
9 => '94',
10 => '149',
11 => '219',
12 => '234',
13 => '264',
14 => '266',
15 => '270',
16 => '273',
17 => '285',
)
我有另一個表people,其中有數千行包含這些人的資料(姓名、姓氏、郵件),正如您從陣列中可以看出的那樣,我想專門獲取 id 位于該組行中的行(7, 13、14、16、28、42、46、79、81、94、149、219、234、264、266、270、273 和 285)。
我可以使用這個正則運算式代碼輕松地在 PHP 中使用表組中的單個值作業
SELECT * FROM groups WHERE people REGEXP CONCAT('i:[0-9]{1,3};s:[0-9]{1,3}:.', ?, '.;')
/* Where ? is the specific id I want. */
假設我查詢這個
SELECT * FROM groups WHERE people REGEXP 'i:[0-9]{1,3};s:[0-9]{1,3}:"7";'
這確實會為我獲取包含 id 7 的表組中的所有行。
現在,我需要的是基本上從我的表人員中獲取姓名和姓氏,但只有那些 id 在組中的特定資料中的人。我將撰寫一些不起作用的代碼,以便您可以看到我的方法
SELECT name, surname
FROM people AS table1
IF id
IN (people REGEXP CONCAT('i:[0-9]{1,3};s:[0-9]{1,3}:.', table1.id, '.;')
FROM groups
WHERE id = 1)
你能幫我一把嗎?我確定必須使用正則運算式,也許還有案例,但我沒有這些經驗。如果可能的話,我想在一個查詢中獲取所有內容。
uj5u.com熱心網友回復:
您需要加入表格。
SELECT p.name, p.surname
FROM people AS p
JOIN groups AS g ON g.people REGEXP CONCAT('i:[0-9]{1,3};s:[0-9]{1,3}:"', p.id, '";')
WHERE g.id = 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/460605.html
上一篇:如何僅固定CollapsingToolbarLayout的最后一個子項?
下一篇:使用動態引數(陣列)的PDO查詢
