1

我有以下问题:我有一个table1包含多列col1的表col2

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

现在我需要所有条目col1- 带有四个 in 的条目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 中执行此操作,因为数据库位于服务器上,我想尽可能减少对数据库的访问。真正的问题涉及的表比 2 多;)。感谢任何输入,谢谢。

4

2 回答 2

1

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

SELECT * FROM table2 WHERE col3 IN (SELECT col1 FROM table1 WHERE col2 = 4); 
于 2017-05-23T13:52:51.403 回答
1

这种方法是行不通的,因为在 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
于 2017-05-23T13:55:50.030 回答