【问题标题】:Querying a table for an uservariable list查询表以获取用户变量列表
【发布时间】:2017-05-23 13:46:38
【问题描述】:

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

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

现在我需要 col1-entries 的所有条目,在 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 多;)。 感谢任何意见,谢谢。

【问题讨论】:

  • '现在我有一个 table2,我想在其中设置 col3 具有存储在 @col2fours 中的值之一的行。解释一下
  • 我不明白你的问题。

标签: mysql database variables user-variables


【解决方案1】:

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

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

【讨论】:

  • 谢谢,没想到这样的事情 ;)
【解决方案2】:

这种方法是行不通的,因为在 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

【讨论】:

  • 谢谢!我认为子查询是我要走的路,加入似乎有点不适合我的问题,但感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多