Mysql

根據使用者選擇建構 where 子句

  • March 21, 2016

我和我的團隊正在開發一個多代理系統 (MAS),該系統應該使用語義搜尋和本體對代理數據庫的特定欄位進行統計(使用者選擇要考慮的欄位)。

例如,使用者可能想知道儲存在數據庫中的男性、20 歲以上、居住在紐約市、血型:A 並且單身的人數。

所以我想知道是否有一種方法可以在 MySQL(MySQL 5.7.10.0)中編寫查詢,返回數據庫中匹配元組的數量(匹配使用者的選擇和條件),或者 JAVA 中的 jsc.jar(java統計類)或任何其他 JAVA jar 都可以執行所需的操作。我知道我應該在查詢中使用“count(*)”,但我不確定如何在執行時建構查詢的“where”部分(依賴於使用者對欄位的選擇)。

我正在尋找一種根據使用者在執行時選擇的內容來建構查詢的方式(具體來說是“位置”部分)。可能嗎?

非動態動態where子句:

create table foo (
 gender char(1),
 age smallint,
 blood_type varchar(50)
);

insert into foo values
('m', 40, 'o+'),
('m', 20, 'b-'),
('f', 30, 'b+');

set @gender = 'm';
set @age = 40;
set @blood_type = null;

select
*
from foo
where
 (@gender is null or gender = @gender)
 and (@age is null or age = @age)
 and (@blood_type is null or blood_type = @blood_type)

http://sqlfiddle.com/#!9/c9d888/3

  1. 使用 PHP 或 Java 或 VB 建構 UI。它將有選擇並導致…
  2. 另一個頁面動態構造WHERE子句加上查詢的其餘部分,執行查詢並顯示結果。

這很簡單直接,但它確實需要一些應用程序語言的程式知識。(SQL 不是這樣做的地方。)

引用自:https://dba.stackexchange.com/questions/132726