SQL table 中的语句

SQL statement inside a table

我想要做的是在 table 中加入 SQL。 这是它的样子:

馅饼table

Id       type message
1        2    'hello'
2        0    'bye'
3        2    'meh'

蛋糕table

Id      data     pieId   
1       70       1@2
2       6        2
3       8        1@3@2

这就是两个 table 的样子,我想做的是 select 蛋糕 table data = 70 并拥有它return 蛋糕的第 1 行 table,以及 return 馅饼的第 1 行和第 2 行 table。

我真的不在乎它 return 将它们作为单独的 table、行、联接或列。

我真正想要的是能够向数据库请求 data = 8 并且能够 return 123来自馅饼 table。如果您有任何建议,我真的不在乎它是如何工作的

所以我希望能够查询蛋糕并获得动态数量的馅饼。如果您能想到某种方法,甚至 table 也可以更改。

看来您需要更新数据库设计

我会从蛋糕 table 中删除 pieId 并创建一个关系 table。让我们用 Id、PieId、CakeId 称它为 CakePies。只需将关系添加到 table

查询将是

    Select * 
from Cake c
Inner join CakePies cp on c.Id = cp.CakeId
inner join Pies p on p.Id = cp.PieId
where Data = 70 -- or whatever filter you want

更新 您的 CakePies table 应该如下所示:

CakeID   PieId
1        1
1        2
2        2
3        1
3        2
3        3

看看这个 fnSplitString 的例子:

http://www.sqlservercentral.com/blogs/querying-microsoft-sql-server/2013/09/19/how-to-split-a-string-by-delimited-char-in-sql-server/

从那里,尝试:

SELECT c.id, c.data, (SELECT message FROM pie WHERE pieid IN (SELECT * FROM fnSplitString(c.pieid, '@') ) AS 'message'
FROM cake c
WHERE c.data = 8

这有点愚蠢 - 你最好为 pieid 列使用关系结构:例如:

cake table
Id      data     pieId
1       70       1
1       70       2
...

试试这个:

SELECT c.Id, c.data, p.Id, p.type, p.message
FROM cake c 
INNER JOIN pie p ON '@' + c.pieId + '@' LIKE '%@' + p.Id + '@%'
WHERE c.data = 70