根据另一个表mysql

时间:2015-11-25 08:57:51

标签: mysql database select

我遇到了与我为MySQL数据库开发的前端相关的问题。我有两个表,表1(T1)由一个带整数的列组成,表2(T2)由一个带整数的col和一个带有字符串的col组成。 T1和T2的长度不同。

T1看起来像这样:

num_t1
1
4
6
1
5
3

T2看起来像这样:

num_t2| string_t2
1     | s1
2     | s2
3     | s3
4     | s4
5     | s5

我想要的是SELECT T1,但是我想要一个包含来自T2的字符串的列,而不是获取整数,其中num_t1和num_t2相等。有意义吗?

所以,如果我说

SELECT * FROM T1

而不仅仅是num_t1,我想要

s1
s4

s1
s5
s3

要求这样做的代码是什么?现在我有一个像这样的静态修复

SELECT * FROM T1
CASE WHEN num_t1 = 1 THEN 's1'
     WHEN num_t1 = 2 THEN 's1'
     so on...
     ELSE 'Not available'
END AS num_t1_string

有更动态的方式吗?因此,每当我更改T1和T2中的整数或字符串时,我都不需要修改查询。

如果需要进一步澄清,请告诉我。

编辑:第一个问题现在用括号内的代码解决:

SELECT num_id
(SELECT T2.string_t2
FROM T1 LEFT JOIN T2
ON T1.num_t1 = T2.num_t2
ORDER BY T1.num_t1) AS string_t1
FROM T1

但是,当我尝试子查询时,我得到错误1242.子查询返回多行。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

正如我所说,你可以使用像

这样的连接查询
select T1.num_t1,T2.string_t2 from T1 left join T2 on T1.num_t1=T2.num_t2

我在这里使用了右连接来获取表T1的完整数据

如果您需要完整的文档,可以参考此链接

http://dev.mysql.com/doc/refman/5.7/en/join.html

相关问题