【发布时间】:2011-05-21 06:23:12
【问题描述】:
我认为MySQL 对我来说是最难的语言,我一年前开始学习 MySQL,但我仍然不明白我能做什么以及如何在不问这里的情况下构建我的查询。
我有一个简单的查询,我想看看如何@vars,所以我尝试了这个:
SELECT param_1, @param := param_2, @param
FROM my_table
结果是:
param_1 @param := param_2 @param
Dave 3 [BLOB - 1B]
Mike 4 [BLOB - 2B]
Luke 2 [BLOB - 2B]
Bob 65 [BLOB - 2B]
Dean 6 [BLOB - 2B]
它不希望@param 等于param_2 吗?
param_1 @param := param_2 @param
Dave 3 3
Mike 4 4
Luke 2 2
Bob 65 65
Dean 6 6
什么是[BLOB - 1B] 和[BLOB - 2B]?
有时,当我需要为可能有多个结果的特定表的每个结果获取一个值时,我会进行子查询,所以我使用子查询,但我不知道它是如何工作的:
SELECT table_1.param_1, table_1.param_2, @param = table_1.param_3, new_table_2.param_1, new_table_2.param_2
FROM table_1
LEFT JOIN (SELECT *
FROM table_2
WHERE new_table_2.param_1 = @param
LIMIT 1
) new_table_2
ON new_table_2.param_1 = @param
WHERE table_1.param_2 = 33
我的问题是:
为什么我在第一个查询中得到[BLOB - 1B] 和[BLOB - 2B]?
谁能解释我如何将@vars 正确传递给子查询?
什么时候应该使用子查询?
基本上,查询的过程是什么,是否存在一些关于如何返回数据的明确指南?
【问题讨论】:
-
你在哪里见过这样的@例子?
-
我已经写了这个并试图对其进行测试,但我知道它可能结构不正确,我想通过查看子查询的好例子来了解如何修复它。