1

私はdbデザインを持っています

表1

id int(10);
name varchar(25);
cat_id_list varchar(255);

テーブル2

cat_id int(10);
category varchar(50);

tab 1 - cat_id_list には、tab2 の cat_id のリストが含まれています。tab1 から特定の基準でいくつかのレコードを選択しました。無視する cat_id の特定のセットがあります。ここで、cat_id_list 列に特定の cat_id を持つ rec を削除したいと思います。誰でも助けてくれますか

表1

    id      name      cat_id_list
    1       abc       1,2,
    2       ab        3,
    3       xyz       2,3,

表 2

    cat_id        category
    1             name1
    2             name2
    3             name3

cat_id_list に '1' 値を含むテーブル 1 のレコードを無視したいと思います。

4

3 に答える 3

2

ID を cat_id_list に保持するときに、ここで何か間違ったことをしています。あなたがすべきことは、table1.id と table2.cat_id を保持する 3 番目のテーブル (table3) を追加することです。そのため、提供したサンプルでは、​​テーブル 3 に 4 つのレコードが含まれます。

FK を追加すると、データの一貫性を保つのに役立ちます。FK では、データを消去する削除カスケードを定義できます。

于 2013-06-27T09:45:10.370 に答える
0

これは非効率的かもしれませんが、次の 2 つのテーブルを結合できます。

SELECT * From Table_1 
JOIN Table_2 ON CHARINDEX(Cast(Cat_ID AS varchar(255)) + ',',Cat_ID_List) > 0
于 2013-06-27T10:25:03.467 に答える