sql >> データベース >  >> RDS >> Mysql

配列から少なくとも1つの値に一致するすべての行をフェッチするにはどうすればよいですか?

    Lad2025のsqlfiddle に寄りかかって そして、この賢い答え Pavelから

    スキーマ

    CREATE TABLE tab(
       id   INTEGER  NOT NULL PRIMARY KEY 
      ,sets VARCHAR(6) NOT NULL
    );
    INSERT INTO tab(id,sets) VALUES (1,'1');
    INSERT INTO tab(id,sets) VALUES (2,'1,2');
    INSERT INTO tab(id,sets) VALUES (3,'1,2,4');
    INSERT INTO tab(id,sets) VALUES (4,'1,2,6');
    INSERT INTO tab(id,sets) VALUES (5,'3,8,9');
    INSERT INTO tab(id,sets) VALUES (6,'7,8,9');
    INSERT INTO tab(id,sets) VALUES (7,'5,8,9');
    

    クエリ

    -- 1,2,3,6 ... seek this
    
    select * from tab 
    WHERE CONCAT(",", `sets`, ",") REGEXP ",(1|2|3|6),";
    +----+-------+
    | id | sets  |
    +----+-------+
    |  1 | 1     |
    |  2 | 1,2   |
    |  3 | 1,2,4 |
    |  4 | 1,2,6 |
    |  5 | 3,8,9 |
    +----+-------+
    

    さらに良いことに、データの正規化については、上記の質問の下にあるコメントを参照してください。そうすれば、インデックスの最適な使用法を選択できるかもしれません。



    1. 特定の日付のsql/PHPを使用して、2つの異なる行/列の2つの数値の平均、分散、および標準偏差を計算します

    2. Tomcat6はMySqlに接続できません(ドライバーはサーバーからパケットを受信して​​いません)

    3. LIKE句で角かっこをエスケープするにはどうすればよいですか?

    4. SQL Serverの変更データキャプチャ(CDC)テーブルから履歴または監査ビューを作成する方法-SQLServerチュートリアル