|
查看: 1268|回复: 18
|
Database query 疑问....
[复制链接]
|
|
|
我想问问....
SELECT * FROM phone WHERE ID='6';
ID 6 里面是有三个 results的...
就是属于 ID 6 有三个电话号码....
如果我这样select...
就会是..
ID Phone
============
6 123456
6 654321
6 9821234
我想把它变成一条row出现这三个答案...
我该如何写那个query呢?
我试了很多次都不行....
Example:
ID Phone1 Phone2 Phone3
================================
6 123456 654321 9821234
我想要这样的result....  |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:23 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:28 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-9-2008 11:28 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:33 AM
|
显示全部楼层
试下这个。如果可以得到你的要得格式让我知道。。。我猜的。。。
确保你的column 是 ID 和 Phone。
SELECT ID, Phone(0) As Phone1, Phone(1) As Phone2, Phone(2) As Phone3 FROM phone WHERE ID='6'; |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:42 AM
|
显示全部楼层
Phone() AS , 沒有這樣的function吧 |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:46 AM
|
显示全部楼层
我猜()应该可以是array吧。。。原来是不能的。。哈哈哈。。。sql query 应该不能拿到你要得答案。。。用sql拿到答案然后用programming排你要得格式 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-9-2008 11:46 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-9-2008 11:52 AM
|
显示全部楼层
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:54 AM
|
显示全部楼层
|
一个column是可以。。但是把原本的row换去column因该不能 |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 11:56 AM
|
显示全部楼层
SELECT phoneID, phoneNo As phone1 FROM phone WHERE ID='6';
应该会拿到
phoneID phone1
====================
6 123456
6 654321
6 9821234 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-9-2008 11:59 AM
|
显示全部楼层
原帖由 d3ric3 于 26-9-2008 11:56 AM 发表 
SELECT phoneID, phoneNo As phone1 FROM phone WHERE ID='6';
应该会拿到
phoneID phone1
====================
6 123456
6 654321
6 ...
是咯..
我就是得到这样的答案...
唉....
那我想问, 如果我要拿同一个 ID 的 第二行的data...
要怎样写?? 可以的吗??
因为现在ID 6 有三个data... 我要的是第二个而已.....  |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 01:21 PM
|
显示全部楼层
|
SELECT * FROM phone WHERE phoneID = 6 AND phoneNO = 654321; |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 02:41 PM
|
显示全部楼层
|
请问下你的table有什么特征吗?? 如index... |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 03:07 PM
|
显示全部楼层
你的要求不切实际。。。我猜测你是使用MySQL 的 command prompt来进行查询的吧?你的要求根本无法通过MySQL的 command prompt 来实现。使用select as 也不行,因为你根本无法预知你的query会搜寻到多少笔资料,你又如何知道你要多少个select as?再说select as 也不能把同一个column里的不同数值map去不同的column.
你只能通过其他的媒介,例如 php 之类的,查询了结果之后再使用 php 把结果根据你的要求显示出来。 |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-9-2008 03:21 PM
|
显示全部楼层
原帖由 d3ric3 于 26-9-2008 01:21 PM 发表 
SELECT * FROM phone WHERE phoneID = 6 AND phoneNO = 654321;
但是我是已经select三个出来...
然后才要第二个data....
现在我用着limit来叫第二个data出来.... |
|
|
|
|
|
|
|
|
|
|

楼主 |
发表于 26-9-2008 03:23 PM
|
显示全部楼层
原帖由 geekman 于 26-9-2008 03:07 PM 发表 
你的要求不切实际。。。我猜测你是使用MySQL 的 command prompt来进行查询的吧?你的要求根本无法通过MySQL的 command prompt 来实现。使用select as 也不行,因为你根本无法预知你的query会搜寻到多少笔资料,你又如 ...
你说得也对...
因为我想看看SQL 里面有没有这样的query.....
谢谢你.... |
|
|
|
|
|
|
|
|
|
|
发表于 26-9-2008 04:23 PM
|
显示全部楼层
回复 17# wcpon 的帖子
有,可是很长又乱....
例子:
select a.name1, a.name2, a.name3
from(select
(case
when b.no = '1' then
b.name
else
null
end) name1,
(case
when b.no = '2' then
b.name
else
null
end) name2,
(case
when b.no = '3' then
b.name
else
null
end) name3 from table b) a |
|
|
|
|
|
|
|
|
|
|
发表于 29-9-2008 12:52 AM
|
显示全部楼层
select distinct id,
(select phone from phone where id=6 limit 0,1) as phone1,
(select phone from phone where id=6 limit 1,1) as phone2,
(select phone from phone where id=6 limit 2,1) as phone3
from phone where id=6
 |
|
|
|
|
|
|
|
|
| |
本周最热论坛帖子
|