我正在存储一份硬盘清单
SELECT @items := GROUP_CONCAT(ID) FROM table_1 ... etc
Run Code Online (Sandbox Code Playgroud)
@items现在是一串数字:55,77,99,2038,2844等
后来,我尝试在where子句中使用它:
SELECT * FROM table_2 WHERE table_1.ID IN (@items)
Run Code Online (Sandbox Code Playgroud)
这不起作用.好像应该这样.我知道当我手动拉取数据时,将其放入变量中,然后输出它可以工作:
list($x) = SELECT @items := GROUP_CONCAT(ID) FROM table_1 ... etc
$goodResults = SELECT * FROM table_2 WHERE table_1.ID IN ($x)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢.
Dan*_*llo 13
您可能想要使用该FIND_IN_SET()功能:
SELECT * FROM table_1 WHERE FIND_IN_SET(id, @items) > 0;
Run Code Online (Sandbox Code Playgroud)
测试用例:
CREATE TABLE table_1 (id int, group_id int);
INSERT INTO table_1 VALUES (1, 1);
INSERT INTO table_1 VALUES (2, 1);
INSERT INTO table_1 VALUES (3, 1);
INSERT INTO table_1 VALUES (4, 1);
INSERT INTO table_1 VALUES (5, 1);
SELECT @items := GROUP_CONCAT(id) FROM table_1 GROUP BY group_id;
SELECT * FROM table_1 WHERE FIND_IN_SET(id, @items) > 0;
+------+----------+
| id | group_id |
+------+----------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 1 |
+------+----------+
5 rows in set (0.02 sec)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3230 次 |
| 最近记录: |