0

1 つ以上の条件に一致する行を選択したいと考えています。

例 テーブルとデータ

#ID #NAME #KEYWORDS(Varchar)


1 BBC   news,finance

2 CNN   music,finance,sports

3 CNBC  music,sports,finance

ユーザーの検索条件はsports,finance (コンマで区切られた複数のキーワードである場合があります)になり、クエリを実行する前にキーワード文字列のリストに準備されます。

以下のようにsql (1)を使用すると、CNN と CNBC のみが選択されます。

SELECT * from channel where Keywords LIKE '%sports%' OR '%finance%';

しかし、以下のようにsql(2 ) を使用すると、BBC、CNN、CNBC が表示されます。

SELECT * from channel where Keywords LIKE '%finance%' OR '%sports%'

私の要件は、キーワードに一致するすべての行を選択することです (上記の例では、スポーツ、金融は BBC、CNN、および CNBC を取得する必要があります。3 つすべてが金融を持っているためです)。

ユーザー入力は String(sports,finance,etc) になるため、さまざまな入力に基づいてクエリを作成しています。

4

2 に答える 2

1

OR よりも Union クエリを使用することをお勧めします。複数またはクエリの実行に時間がかかります。

SELECT *
FROM channel
WHERE FIND_IN_SET('finance', keywords) 
UNION
SELECT *
FROM channel
      FIND_IN_SET('sports', keywords)
于 2013-01-01T06:06:22.790 に答える
0
SELECT *
FROM table1
WHERE FIND_IN_SET('finance', keywords) or
      FIND_IN_SET('sports', keywords)

または使用LIKE

SELECT * 
from table1 
where Keywords LIKE '%sports%' OR 
      Keywords LIKE '%finance%'
于 2013-01-01T06:04:08.767 に答える