为用户变量列表查询 table
Querying a table for an uservariable list
我有以下问题:
我有一个 table 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 中执行此操作,因为数据库位于服务器上,我想尽可能减少对数据库的访问。真正的问题涉及的 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
我有以下问题:
我有一个 table 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 中执行此操作,因为数据库位于服务器上,我想尽可能减少对数据库的访问。真正的问题涉及的 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