我有以下问题:
我有一个表table1
,其中有多列col1
到col2
:
+------+------+
| 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中执行此操作,因为数据库位于服务器上,我希望尽可能减少对数据库的访问。真正的问题涉及的表多于2;)。
感谢任何意见,谢谢。
答案 0 :(得分:1)
你可以直接使用这样的子查询
SELECT * FROM table2 WHERE col3 IN (SELECT col1 FROM table1 WHERE col2 = 4);
答案 1 :(得分: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