为用户变量列表查询 table

Querying a table for an uservariable list

我有以下问题: 我有一个 table table1 有多列 col1col2:

+------+------+  
| col1 | col2 |    
+------+------+  
|  1   |  4   |  
|  2   |  4   |  
|  3   |  4   |  
|  4   |  5   |  
+------+------+

现在我需要所有条目 col1-在 col2 中有四个输入的条目,为此我使用:

SELECT @col2fours := col1 FROM table1 WHERE col2 = 4;

现在我有一个 table2,我想在其中设置 col3 具有存储在 @col2fours 中的值之一的行。为此,我使用:

SELECT * ID FROM table2 WHERE col3 IN @col2fours; 

这行不通。我已经尝试 =having 而不是 in 以及使用 Group_concat。到目前为止对我没有任何作用。
我想直接在 mySQL 中执行此操作,因为数据库位于服务器上,我想尽可能减少对数据库的访问。真正的问题涉及的 table 多于 2 ;)。 感谢任何意见,谢谢。

你可以直接使用这样的子查询

SELECT * FROM table2 WHERE col3 IN (SELECT col1 FROM table1 WHERE col2 = 4); 

这种方法是行不通的,因为在 MySQL 中没有数组数据类型,所以一个变量一次只能保存 1 个值。

只需使用子查询或连接即可达到预期结果:

SELECT * FROM table2 WHERE col3 IN (SELECT col1 FROM table1 WHERE col2 = 4)

SELECT table2.* FROM table2
INNER JOIN table1 ON table2.col3=table1.col1
WHERE table1.col2 = 4