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
表连接起来,以便在过滤器中使用结果值。
```