簡體   English   中英

將同一個表的多個查詢組合到一個SQL語句中

[英]Combining multiple queries of the same table into one SQL statement

我試圖結合這些MySQL查詢,但沒有讓他們正確。 這是我希望結合起來獲得單行sql語句的偽代碼。

$var1 = "abc"
$var2 = "def"

IF ( $var1 IN (SELECT DISTINCT col1 FROM t1) )
{
    SELECT colA, colB, colC FROM t1 WHERE col1 = $var1 AND col2 LIKE '%$var2%'
}
ELSE
{
    SELECT colA, colB, ColC FROM t1 WHERE col2 LIKE %$var1%
}

謝謝

首先讓我說mjfgates可能是正確的。 原始的偽代碼並不是“壞”,因為它需要兩個步驟。 SQL語句越復雜,查詢引擎就越有可能找不到最佳計划。 在這種特殊情況下,由於只有一個表我們引用了多次,所以不太可能,但在這些情況下,一般要記住這一點。 將SQL簡化為一個語句本身並不總是一個有價值的目標。

現在回答你的問題:

   select colA,colB,colc from table1 t1
    where 
    (
    (col1 = $var1 and col2 like '%$var2%') and 
            EXISTS (select 1 from table1 t2 where t2.col1 = $var1)
    )
    or 
    (
    (col2 LIKE %$var1%) and 
           NOT EXISTS (select 1 from table1 t3 where t3.col1 = $var1)
    )

我想......我不會這樣做。 這就是存儲過程和視圖的東西,每個過程都有DO語句。 只需從最具體到最少的順序運行選擇,並返回給出行的第一個結果。

另外,我可能會在這里看到一個錯誤。 如果表中有col1 = $ var1的項目,但這些項目中沒有一個像$ var2那樣的col2,會發生什么? 應該發生什么?

暫無
暫無

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

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