所以,我需要从存储键和值的表中提取一些元数据,所以我首先选择一个特定的键来进行SELECT
查询,(key_a
),然后再创建另一个查询保持id并瞄准另一种数据类型(key_b
),以下是我所拥有的代码的简化:
SELECT
id AS param,
val as key_a,
(
SELECT val
FROM table
WHERE key = 'key_b' AND id = param
) AS key_b
FROM table
WHERE val = 'key_a'
我想要的是在没有SELECT
查询选择id
字段的情况下实现此目的。尝试删除id AS param,
行并将param
替换为id
或table.id
到目前为止还没有奏效。我有点迷失在这里,因为这是我第一次使用嵌套查询而无法找到有关相同表嵌套查询的任何内容。
我做错了吗?
答案 0 :(得分:2)
所以你的问题是,你必须将列id
与自己进行比较,对吧?然后只是别名表名而不是列。
SELECT
val as key_a,
(
SELECT val
FROM table b
WHERE key = 'key_b' AND id = a.id
) AS key_b
FROM table a
WHERE val = 'key_a'
答案 1 :(得分:1)
使用联接。如果表是相同的表,请使用自联接。
SELECT
a.val as key_a,
b.val AS key_b
FROM table a
LEFT JOIN table b ON b.id = a.id AND b.key = 'key_b'
WHERE a.val = 'key_a' -- perhaps you meant a.key here?
;
答案 2 :(得分:0)
SELECT DISTINCT A.id as param,
(SELECT B.val from table B where B.id = A.id and B.key = 'key_a'),
(SELECT C.val from table C where C.id = A.id and C.key = 'key_b')
from table A
我不确定你想要什么,但希望这可以解决你的问题