在sql中使用Sub查询的正确方法

时间:2013-06-28 01:20:10

标签: php sql

我在使用多个子查询时遇到了一些问题,

有类似的东西吗?

我当前的查询:

SELECT A.category_one as cat1, B.category_two as cat2, C.category_three as cat3
FROM table1
(SELECT name FROM table1 WHERE user_id ='32') A
(SELECT age FROM table1 WHERE age='12') B
(SELECT gender FROM table1 WHERE user_id ='32') C
WHERE ticket_id='12'

因此,如果我使用PHP获取结果,我可以回显像

这样的数据
foreach ($result as $value) {
   echo $value['cat1'] . ' ' . $value['cat2'] . ' ' . $value['cat3'] . "<br>";
}

查询是否正确?如果没有,那么这样做的正确方法是什么?

任何帮助将不胜感激。 :)

2 个答案:

答案 0 :(得分:0)

需要一点点改进

(SELECT name FROM table1 WHERE user_id ='32') A
(SELECT gender FROM table1 WHERE user_id ='32') C

(SELECT name,gender FROM table1 WHERE user_id='32')A 

因为A和C的where子句相同,所以请确保将'C.category_three设为cat3' 回到'A.category_three as cat3'

答案 1 :(得分:0)

SQL和问题在以下方面没有很好地形成:

1)SQL中存在语法错误(例如,子查询之间缺少逗号)。你应该先修复它们(例如在SQLFiddle上),除非你完全坚持这样做。由于查询非常简单,这应该不是问题

2)您尚未提供任何JOIN信息。如果没有,您将获得这些查询结果的交叉产品。如果它们各自返回一行,那么你没问题,因为你将得到一行输出。但是,由于您隐含了for循环,您希望返回多行,这可能不是这种情况。如果你不熟悉JOINing的概念,你可能应该在进一步了解之前了解它。

3)正如其他人所指出的那样,您没有提供输入数据和输出结果的任何样本。这总是一个好主意,因为缺乏清晰的英文描述,就像这里的情况一样,绝对必要。