1

クエリがあります:

SELECT blalist FROM blatable WHERE blafield=714

これは、「2,12,29,714,543,1719」のような文字列を返します。そして、別のクエリがあります:

SELECT userid, name, surname, creditcardnum, items
    FROM stolencards WHERE userid IN
    (SELECT blalist FROM blatable WHERE blafield=714)

今では機能していません。
これらのクエリを個別に実行することによってのみ、それを機能させることができました。単一のクエリに保持するにはどうすればよいですか?

4

3 に答える 3

4

1つのセルに複数の値を格納しないでください。の各値はblatable独自の行にある必要がありますIN。そうすれば、句は魅力のように機能します。データベースの正規化、特にテーブルの設計方法に関する第一正規形を見てください。

1つのセルにすべての値があるため、IN比較を行うと、すべてのユーザーIDが文字列「2,12,29,714,543,1719」と比較されますが、これは明らかに一致しません。クエリは事実上次のようになります。

...FROM stolencards WHERE userid IN ("2,12,29,714,543,1719")
于 2010-01-25T14:22:13.733 に答える
0

blalistとuseridのデータ型が同じであるか、またはblalistが本当にuseridを返すかを確認してください。

于 2010-01-25T14:17:09.097 に答える
0

正しいデータ型とpkおよびfkの関係を指定した場合は、次のことを試してください。

SELECT s.userid, s.name, s.surname, s.creditcardnum, s.items
FROM stolencards s inner join blatable b on s.userid = b.blafield
where b.blafield = 714
于 2010-01-25T14:18:52.493 に答える