我现在有两个表:
test
ID,Name,Win,Tie,Lostcontent
ID,TestID,Field其中content表中的Field对应test中Win,Tie,Lost三个字段名如content的一个记录内容是:
1,1,Tie我现在就有一个需求是要联合查询,同时要根据联合的内容取出content表中Field对应的test的字段的值select content.id,(这里我需要去除Field字段对应的test相应字段的值,在这里就是Tie字段的值) from content inner join test on content.TestID=test.ID
test
ID,Name,Win,Tie,Lostcontent
ID,TestID,Field其中content表中的Field对应test中Win,Tie,Lost三个字段名如content的一个记录内容是:
1,1,Tie我现在就有一个需求是要联合查询,同时要根据联合的内容取出content表中Field对应的test的字段的值select content.id,(这里我需要去除Field字段对应的test相应字段的值,在这里就是Tie字段的值) from content inner join test on content.TestID=test.ID
解决方案 »
- 大家都进来看下,
- 咨询一个少见的mysql查询语句
- 如何设计数据库来存储二维数组
- PARTITION BY LIST和HASH是不是只支持INT类型
- 怎样优化查询语句
- 很奇怪的问题,大家帮忙分析下什么原因啊,分数有限大家谅解啊
- mysql-administator 启动后弹出警告框;couldn't find the setting 怎么处理
- Hibernet如何处理自增1的字段?
- 为什么数据少了一半呢?
- mysql error:Access denied for user root@localhost using password yes
- 关于mysql中的MySqlParameter[]
- mysql 怎么显示存储过程列表
1 test1 1 2 3
2 test2 2 3 4content记录
1 1 Tie
2 1 Lostcontent的Field字段的内容只会是Win Tie Lost我现在想要取出的数据是:
select content.id,(这里我需要根据Field字段取对应的test相应字段的值,在这里就是Tie字段的值) from content inner join test on content.TestID=test.ID1 2(2是test表Tie的值)
2 3(2是test表Lost的值)
2 3(3是test表Lost的值)
+----------------------------------------------------------+
| substring_index(substring_index('1,1,Tie',',',2),',',-1) |
+----------------------------------------------------------+
| 1 |
+----------------------------------------------------------+
1 row in set (0.00 sec)
字段:
ID,Name,Win,Tie,Lost
值:
1 test1 1 2 3
2 test2 2 3 4content
字段:
ID,TestID,Field
值:
5 1 Tie
6 1 Lost要求的结果
5 2(2是test表Tie的值)
6 3(3是test表Lost的值)
能帮忙把组合sql写出来一下吗
if(Field='tie',tie,if(Field='Lost',Lost,Win))
from content inner join test on content.TestID=test.ID
还有其他办法不判断吗,因为现在到时固定了Win Tie Lost 三个值,但是后期可能会增加的
if(Field='tie',tie,if(Field='Lost',Lost,Win))
生成其中FIELD的值
+------+--------+
| id | result |
+------+--------+
| 5 | 2 |
| 6 | 3 |
+------+--------+
2 rows in set (0.00 sec)
SELECT *,@ee:=CONCAT(@ee,' when Field=\'',FIELD,'\' then ',FIELD) FROM content;
SET @ee=CONCAT('select * , case ',@ee,' end from content inner join test on content.TestID=test.ID');
SELECT @ee;
PREPARE stml FROM @ee;
EXECUTE stml;