我遇到了与我为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.子查询返回多行。我该如何解决这个问题?
答案 0 :(得分:1)
正如我所说,你可以使用像
这样的连接查询select T1.num_t1,T2.string_t2 from T1 left join T2 on T1.num_t1=T2.num_t2
我在这里使用了右连接来获取表T1的完整数据
如果您需要完整的文档,可以参考此链接