2010-06-19 51 views
1

我有一个由 ID(AUTO_INCREMENT) 数为int(可以包含的值从10到12)的表 myvalue的(VARCHAR)分散MySQL表的关系结构

我想要做的是驱散本表的报告用途的关系结构。即,我倒是希望有这样的:

ID(AUTO_INCREMENT)

number10(含有myvalue的WHERE数= 10)

number11(含有myvalue的WHERE数= 11)

number12 (包含myvalue WHERE number = 12)

我知道我可以通过 得到相应的结果SELECT myvalue FROM mytable WHERE number = 10;

但我还没有想出如何将这三个SELECT语句写入单个表或视图。

thx任何帮助提前!

+1

什么是你的问题? – 2010-06-19 14:02:56

+0

一个问题会有帮助。 – thomasfedb 2010-06-19 14:04:15

+0

对不起,我正在尝试使用HTML表格语法,它没有解决......不是它的编辑。 – 2010-06-19 14:05:28

回答

1

这可能会做你所需要的。你没有解释得很好,但它可能不会!

SELECT user, 
MIN(CASE WHEN number = 10 then myvalue end) AS number10, 
MIN(CASE WHEN number = 11 then myvalue end) AS number11, 
MIN(CASE WHEN number = 12 then myvalue end) AS number12 
FROM table 
WHERE number IN (10,11,12) 
GROUP BY user 
+0

@Martin Smith和其他所有帮助过我的人。非常感谢这正是工作。我对这个不好的解释感到非常抱歉。尽管所有这些你都明白了! 虽然我有两个问题: 1)你能解释为什么你使用MIN - 我真的很想了解会发生什么...... 2)@ Vin-G如何在这里格式化为代码? :D Thx again guys! – 2010-06-19 14:57:39

+0

@ ran2:每行缩进四个空格,或选择一段文字,然后单击101010图标(ctrk-k快捷方式)。虽然你只能这样做的问题和答案(不在评论中)。 – 2010-06-19 15:02:16

+1

@ ran2:有关详细信息,请访问http://stackoverflow.com/editing-help。 – 2010-06-19 15:09:34

1

我不明白的“ID number10 number11 number12”的东西,但如果你要选择与number场相匹配的一组值的行,你可以这样做:

SELECT * FROM mytable WHERE number IN (10, 11, 12); 

,或者,你可以选择一些范围

SELECT * FROM mytable WHERE number >= 10 AND number <= 12; 

编辑2:

Vin-G明白了。我是的方式关闭。

+0

抱歉在这样一个误导的方式,说明了这个问题。你们的建议正是我一开始就有的。我想把这个输出转换成一个以number10,number11,number12作为COLUMN名字的表格。就我而言,我完全相信myvalue的正好包含行相同数量的每个数字 – 2010-06-19 14:19:08

+0

@ RAN2你能提供你从这个阶段获得,所以我们可以看到它需要如何摆动输出的例子吗?它是基于身份证吗?还是它只能返回3条记录?确切地说, – 2010-06-19 14:22:28

2

像这样的事情也许?:

SELECT 
    id, 
    IF(number=10, myvalue, NULL) AS number10, 
    IF(number=11, myvalue, NULL) AS number11, 
    IF(number=12, myvalue, NULL) AS number12 
FROM mytable 
+0

!我想你刚刚懂得我的意思。虽然我不能跑到目前为止,语法明智.... – 2010-06-19 14:30:00

+0

好吧,我没有得到它。基本上这是我想要的。但由于NULL,我有交替行。我只是希望他们能够在同一行中,如果他们属于同一个用户(ID).. – 2010-06-19 14:34:36

+0

@马丁·史密斯:刚才说有其他用户列。在选择查询...嗯我倒是喜欢在这里输入一些表...会轻松很多:) – 2010-06-19 14:39:44