用一个表的结果作为另一个的字段来做查询

select a.条件,a.结果 form a 查询出来的结果作为条件用做c的字段名,结果有多条
select * from c where a的条件(在c表中的某个栏位)=a.结果

求帮忙!

a.条件不确定,使用动态sql吧 ,字段拼接进去,如果多个可以使用游标循环去赋值col_name

DECLARE @col_name AS NVARCHAR(max), @sql AS NVARCHAR(max)
SELECT @col_name = '条件'  
FROM a

SET @sql = 'SELECT * FROM c WHERE ' + QUOTENAME(@col_name) + ' = (SELECT 结果 FROM a where 条件='''+@col_name+''' )'

EXEC sp_executesql @sql


SELECT *
FROM c
WHERE a.条件 IN (SELECT a.结果 FROM a)



SELECT a.条件, a.结果

FROM a

WHERE a.条件 IN (

    SELECT c.栏位名

    FROM c

)


其实就是嵌套查询中结果不唯一的问题
要么用in,让结果满足其中一条即可
要么内查询要使用聚合函数使结果唯一

第一个结果作为第二个查询的子查询就好了

您可以使用子查询将第一个表(a表)的结果作为第二个表(c表)的查询条件。下面是一个示例 SQL 查询语句:

SELECT *
FROM c
WHERE c.某个栏位 = (
  SELECT a.结果
  FROM a
  WHERE a.条件 = '某个条件'
)

这个查询语句中,我们首先查询出表 a 中满足条件为 '某个条件' 的一行数据,然后使用其结果值作为子查询中的匹配条件,从表 c 中筛选出匹配的数据行。其中某个栏位需要替换为您在表 c 中要匹配的字段名称。

SELECT *
FROM T
WHERE T.字段 = (
  SELECT 结果值
  FROM a
  WHERE a.字段 = '条件'
)

 
SELECT * FROM c
WHERE c.字段名 = (SELECT a.字段名 FROM a)
 

源于chatgpt

您可以使用子查询来实现这个目标。具体来说,您可以编写一个子查询,该子查询将 `a` 表中的结果作为输入,并返回一个包含条件值和结果值的表。

然后,您可以将此子查询与 `c` 表连接起来,并使用 `a` 表的结果值来过滤 `c` 表。以下是可能的 SQL 查询:

```sql
SELECT *
FROM c
JOIN (
  SELECT 条件, 结果
  FROM a
) AS subquery
ON c.某个栏位 = subquery.条件
WHERE subquery.结果 = '要查询的结果值';

这个查询将返回 c 表中所有栏位的数据,其中 某个栏位 等于 a 表中的条件值,并且 a 表中的结果值等于给定值。在这个查询中,子查询用作可连接的虚拟表,它从 a 表中选择条件和结果列,并返回符合条件的行。然后,这个子查询与 c 表连接起来,以便在过滤器中使用结果值。

```