我正在使用单个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
如何做这样的事情?我是在正确的轨道上吗? (我确定我不是)。
答案 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;