Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将多列选择为一列_Mysql_Sql_Select_Concat - Fatal编程技术网

MySQL将多列选择为一列

MySQL将多列选择为一列,mysql,sql,select,concat,Mysql,Sql,Select,Concat,我有两张桌子 卡片索引 +-----+-----+-----+-----+ | uid | id1 | id2 | id3 | +-----+-----+-----+-----+ | 1 | 125 | 129 | 145 | | 2 | 127 | 128 | 132 | +-----+-----+-----+-----+ 和卡片数据 +----+------------+----------+... | id | last_use | active | +----+----

我有两张桌子

卡片索引

+-----+-----+-----+-----+
| uid | id1 | id2 | id3 |
+-----+-----+-----+-----+
|  1  | 125 | 129 | 145 |
|  2  | 127 | 128 | 132 |
+-----+-----+-----+-----+
和卡片数据

+----+------------+----------+...
| id |  last_use  |  active  |
+----+------------+----------+...
| 125| 10-07-2014 |   true   |
| 127| 27-02-2014 |   true   |
| 128| 15-06-2014 |   true   |
| 129| 10-01-2013 |   false  |
+----+------------+----------+... and so on
我想通过“card_index”中的“uid”从“card_data”中选择所有数据,因此“uid”=1的结果应该如下所示:

+----+------------+----------+
| id |  last_use  |  active  |
+----+------------+----------+
| 125| 10-07-2014 |   true   |
| 129| 10-01-2013 |   false  |
| 145| 13-01-2013 |   true   |
+----+------------+----------+
我所做的SQL查询是:

SELECT * FROM card_data WHERE id IN (SELECT CONCAT(id1,',',id2,',',id3) FROM card_index WHERE uid = 1);
但是,它仅选择第一行:

+----+------------+----------+
| id |  last_use  |  active  |
+----+------------+----------+
| 125| 10-07-2014 |   true   |
+----+------------+----------+
有人能帮我吗?我不知道怎么了。
我使用的是mysql服务器5.5.38-log,它是从FreeBSD上的源代码编译而来的,使用的是
内部连接
,而不是
CONCAT
的组合,其中id IN
对我有效。 问题是:

SELECT * FROM card_data
INNER JOIN card_index ON id1=id OR id2=id OR id3=id
WHERE uid = 1;
以及预期的结果:

+----+------------+----------+
| id |  last_use  |  active  |
+----+------------+----------+
| 125| 10-07-2014 |   true   |
| 129| 10-01-2013 |   false  |
| 145| 13-01-2013 |   true   |
+----+------------+----------+

我建议先对数据进行标准化。合并表格不是更容易吗<代码>id1=id或id2=id或id3=id上的内部连接
@kjtl,通过标准化数据,您的意思是什么。我不能改变这些桌子。我得把每件事都返工else@adirohan谢谢你,现在开始工作了。