0

多くの行と列を持つテーブルがあります。特定の値を含む列を探したいのですが、ID=7 の場合、1 行しか検索しません。

次の式の正しい書き方は?

SELECT *   
FROM mytable
WHERE FIND_IN_SET(400, list_column)
WHEN ID=7;

ありがとうございました。

4

1 に答える 1

0

あなたが提案する形でこれを行うことはできません。

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 番目のクエリで使用することで、これを行うことができます。

ただし、これを行う理由は、テーブルが最初の正規形ではなく、列に繰り返し値を格納しているためだと推測しています。最初の正規形を調べて、それが実際に当てはまるかどうか、およびデータベースを再設計してこれやその他の問題を回避する必要があるかどうかを確認することをお勧めします。

于 2013-12-18T14:15:27.967 に答える