使用单个语句从同一个表中的不同行中选择数据

时间:2013-06-21 16:52:21

标签: mysql sql

我正在使用单个sql从同一个表中的两个不同行中选择数据。

"id"    "borrowMax" "holder"    "category"  "country"
"1"     "2"         "0"         "3"         "US"
"2"     "0"         "1"         "10"        "US"

我正在努力做到这一点。

select id, holder from mytable where id = 2
select borrowMax from mytable where id = (
        holder from the above select, in this case it's 1
) and category = 3

我在网上查看示例后的方式是

SELECT col1.id, col1.holder, col2.borrowMax
FROM collection_db col1
JOIN collection_db col2
ON col2.holder = col1.id
WHERE col1.id = 2 //Here, 2 is the value supplied by me
AND col2.category = 3

当然,这很有效。但由于这是我自己拼凑的东西,我有疑虑。 you如何做这样的事情?我是在正确的轨道上吗? (我确定我不是)。

3 个答案:

答案 0 :(得分:3)

您也可以使用表别名。

select t1.id, t1.holder, t2.borrowMax from mytable t1, mytable t2 where t1.id = t2.holder

答案 1 :(得分:1)

我会使用嵌套的select语句来处理像你这样的用例。没有使用JOIN操作,只是对已经过滤的结果集的选择查询和逻辑上更连贯的代码。

SELECT borrowmax, holder, id FROM mytable WHERE 
  id = (SELECT holder FROM mytable WHERE id = 2 )
    AND category = 3

答案 2 :(得分:0)

我不得不找出印度尼西亚2000年至2010年之间的人口差异是多少? 表格列:

country STRING
population  NUMBER
year    NUMBER

这是给我查询结果的查询:

SELECT b.country,
(b.population - a.population) 
AS diff_population
  FROM population_years a
  JOIN population_years b ON b.country = a.country
WHERE b.country = 'Indonesia'
  AND a.year = 2000
  AND b.year = 2010;