如何在单个SQL查询中执行foreach选择

闷闷不乐

我有一个问题,我尝试做一个foreach选择多行,并在每个选择一个。

这是我的桌子:

| TRANSLATION_ID    | TABLE_NAME                | COLUMN_NAME   | ID_COLUMN     | CODELANGUE_COLUMN     |
|----------------   |-------------------------  |-------------  |-----------    |-------------------    |
| 1                 | CHAMPS_LANGUE             | VALUE1        | ZZZ           | CODELANGUE            |
| 2                 | DELAIS_LIBELLES           | VALUE2        | YYY           | CODELANGUE            |
| 3                 | MODELES_ENQUETES_LIGNES   | VALUE3        | XXX           | CODELANGUE            |
| ...               | ...                       | ...           | ...           |                       |

而且我想SELECT在每个TABLE类似对象做多个CHAMPS_LANGUE , DELAIS_LIBELLES

FOREACH TABLE_NAME
 SELECT COLUM_NAME, ID_COLUM FROM TABLE_NAME WHERE CODELANGUE = 1

让我知道是否不是很明确。:)

双腿马

通过在此处找到的@legendofawesomeness修改了答案,使其与您的情况更加相关

--Cursor for iterating
DECLARE @tableCursor       CURSOR
DECLARE @TABLE_NAME        NVARCHAR(255)
DECLARE @COLUM_NAME        NVARCHAR(255)
DECLARE @ID_COLUM          NVARCHAR(255)
DECLARE @CODELANGUE_COLUMN  NVARCHAR(255)

SET @tableCursor = CURSOR FOR SELECT TABLE_NAME, COLUM_NAME, ID_COLUMN, CODELANGUE_COLUMN FROM [tableData] -- Substitute with the name of your table as given in your question (which you didn't specify)

OPEN @tableCursor
FETCH NEXT FROM @tableCursor INTO @TABLE_NAME, @COLUM_NAME, @ID_COLUMN, @CODELANGUE_COLUMN
WHILE (@@fetch_status = 0)
BEGIN
   --dynamic sql
   DECLARE @sql NVARCHAR(max)

   --Your logic here...
   SET @sql = 'SELECT ' + @COLUM_NAME + ', ' + @ID_COLUM + ' FROM ' + @TABLE_NAME + ' WHERE ' + @CODELANGUE_COLUMN + ' = 1'
   EXEC dbo.sp_executesql @sql

FETCH NEXT FROM @tableCursor INTO @TABLE_NAME, @COLUM_NAME, @ID_COLUMN, @CODELANGUE_COLUMN
END

CLOSE @tableCursor
DEALLOCATE @tableCursor

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章