我在使用多个子查询时遇到了一些问题,
有类似的东西吗?
我当前的查询:
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>";
}
查询是否正确?如果没有,那么这样做的正确方法是什么?
任何帮助将不胜感激。 :)
答案 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)正如其他人所指出的那样,您没有提供输入数据和输出结果的任何样本。这总是一个好主意,因为缺乏清晰的英文描述,就像这里的情况一样,绝对必要。