TopicName | TopicUrl | MainTopicName
------------------------------
1stSubtopic | url1 | MainOne
2ndSubtopic | url2 | MainTwo
3rdSubtopic | url3 | MainOne
结果想得到2个php数组
一个数组$MainOne
(
[TopicName1] => 1stSubtopic
[TopicUrl1] => urll
)
(
[TopicName1] => 3rdSubtopic
[TopicUrl1] => url3
)
另一个数组$MainTwo
(
[TopicName2] => 2ndSubtopic
[TopicUrl2] => url2
)
可以访问$array_from_mysql[1]['TopicName1']
,$array_from_mysql[2]['TopicName2']
等
可以写两个SELECT
语句,例如SELECT TopicName, TopicUrl from table WHERE MainTopicName = ?
。
但如果有许多MainTopicName
,例如MainOneHundred,那么SELECT
就不会很好解决。
但是如何使用CASE
或其他方式呢?
以下(可能)不正确,但我只想了解想法
CASE MainTopicName
WHEN MainTopicName = MainOne THEN SELECT TopicName AS TopicName1
WHEN MainTopicName = MainOne THEN SELECT TopicUrl AS TopicUrl1
WHEN MainTopicName = MainTwo THEN SELECT TopicName AS TopicName2
WHEN MainTopicName = MainTwo THEN SELECT TopicUrl AS TopicUrl2
使用CASE
代替多个SELECT
语句的正确陈述是什么?
答案 0 :(得分:0)
我不完全确定你在问什么,但也许这就是你想要的:
SELECT MainTopicName, GROUP_CONCAT(TopicName) AS TopicNames, GROUP_CONCAT(TopicUrl) AS TopicUrls
FROM YourTable
GROUP BY MainTopicName
TopicNames
和TopicUrls
将以逗号分隔的名称和网址列表。
答案 1 :(得分:0)
所以你想要所有偶数或所有奇数行?
您可以添加id
列作为代理键,然后获取每个偶数或奇数行:
SELECT TopicName, TopicUrl FROM table WHERE id % 2 = 0
(导致所有偶数行。= 1
会给你奇数行。)