簡體   English   中英

與mysql查詢匹配具有相同字段的多個表

[英]match against mysql query against multiple tables with the same fields

當前查詢:

select * from `table1` where MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) AND `price` BETWEEN 0 AND 1000 order by MATCH (`product_name`) AGAINST ('test' IN BOOLEAN MODE) desc, `price` DESC LIMIT 0, 30

如何在具有相同字段的多個表上運行上述查詢? 例如table2,table3,table4

如果將所有表中的所有數據合並到1個單個表而不是多個表中,查詢會更快嗎? 還是完全沒有區別?

第一個問題的答案 :您可以在MySQL中使用JOINS ,它可以將表結合起來。

回答第二個問題

一種方式

SELECT
    table1.this, table2.that, table2.somethingelse
FROM
    table1, table2
WHERE
    table1.foreignkey = table2.primarykey
    AND (some other conditions)

第二種方式:

SELECT
    table1.this, table2.that, table2.somethingelse
FROM
    table1 INNER JOIN table2
    ON table1.foreignkey = table2.primarykey
WHERE
    (some other conditions)

WHERE語法是面向關系模型的,其中INNER JOIN是您應該使用的ANSI語法。

一旦需要開始向查詢中添加更多表,使用WHERE的第一個查詢就會變得更加混亂,難以閱讀且難以維護。 想象一下在四個或五個不同的表上執行相同的查詢和聯接類型……這是一場噩夢。

但是,取決於查詢優化器,它們對計算機可能具有相同的含義。

您應該始終編寫可讀性強的代碼。

也就是說,如果這是內置關系,請使用顯式聯接。 如果要匹配弱相關數據,請對從JOINS獲得的結果集使用where子句。

希望這可以幫助

暫無
暫無

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

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