簡體   English   中英

MySQL - 根據包含 where 子句的另一個列值選擇特定列

[英]MySQL - select specific columns based on another column value with where clause included

我將永遠欠下一個可以幫助我解決我遇到的這個案例/問題的人的債務:

有一個具有以下結構的表:

id(AI)| ColA | ColB   | ColC
-----------------------------
1     |1     | lorem  | ipsum
2     |1     | dolor  | sit
3     |0     | amet   | nula
...

我想根據 ColA 中的值設置要在(ColB 或 ColC)中搜索的列。 例如(偽查詢):

  • select * from table if ColA = 1 then ColB like '%some_criteria%' else if ColA = 0 then (ColB like '%some_criteria%' and ColC like '%some_criteria%')

基本上,在同一個查詢中:

  • 如果 ColA 的值為“1”,則僅在 ColB 中搜索
  • 如果 ColA 的值為“0”,則在 ColB 和 ColC 中搜索

假設 ColB 存儲文章標題,ColC 存儲文章描述。 ColA 存儲文章類型。 因此,如果文章類型為 1,則僅在標題中搜索,如果文章類型為 0,則在標題和描述中搜索。

預先感謝您的幫助!

您可以使用WHERE子句中的條件來實現SQL Switch/Case in 'where' 子句

SELECT *
FROM table
WHERE 
    (ColA = 1 AND ColB LIKE '%some_criteria%')
    OR
    (ColA = 0 AND (ColB LIKE '%some_criteria%' OR ColC LIKE '%some_criteria%'))

此外,一個簡單的UNION可以作為另一個例子https://www.w3schools.com/sql/sql_union.asp

SELECT *
FROM table
WHERE ColA = 1 AND ColB LIKE '%some_criteria%'
UNION ALL
SELECT *
FROM table
WHERE ColA = 0 AND (ColB LIKE '%some_criteria%' OR ColC LIKE '%some_criteria%')

請注意,如果出現重復項, UNION ALL將返回重復項,並且僅UNION返回不同的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM