多くの行と列を持つテーブルがあります。特定の値を含む列を探したいのですが、ID=7 の場合、1 行しか検索しません。
次の式の正しい書き方は?
SELECT *
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;
ありがとうございました。
多くの行と列を持つテーブルがあります。特定の値を含む列を探したいのですが、ID=7 の場合、1 行しか検索しません。
次の式の正しい書き方は?
SELECT *
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;
ありがとうございました。
あなたが提案する形でこれを行うことはできません。
400
単一のクエリで含まれている列を表示する最良の方法は、CASE
テスト対象の列ごとに 1 つのケースを使用するか、同様のものを使用することです。例えば:
SELECT CASE
WHEN col1=400 THEN 'col1'
WHEN col2=400 THEN 'col2'
WHEN col3=400 THEN 'col3'
...
ELSE 'Not found'
END CASE
FROM mytable
WHERE id=7
動的 SQL (または同等の PHP) を使用して、INFORMATION_SCHEMA
クエリを使用してテーブルからすべての列を読み取り、それらの列を上記のような 2 番目のクエリで使用することで、これを行うことができます。
ただし、これを行う理由は、テーブルが最初の正規形ではなく、列に繰り返し値を格納しているためだと推測しています。最初の正規形を調べて、それが実際に当てはまるかどうか、およびデータベースを再設計してこれやその他の問題を回避する必要があるかどうかを確認することをお勧めします。