亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從所有表中選擇行的簡便方法

從所有表中選擇行的簡便方法

PHP
DIEA 2021-04-27 09:18:31
我想在我的mysql數據庫中選擇一些行,我有3個具有相同結構的表,我嘗試使用我創建的腳本并且此方法有效,但是似乎我的腳本占用了太多行。<?php$check1 = mysqli_query($con, "SELECT * FROM text WHERE keyword='$string'");$check2 = mysqli_query($con, "SELECT * FROM sticker WHERE keyword='$string'");$check3 = mysqli_query($con, "SELECT * FROM image WHERE keyword='$string'");if(mysqli_num_rows($check1) == 0 && mysqli_num_rows($check2) == 0 && mysqli_num_rows($check3) == 0) {    echo "success";}?>還有另一種方法可以縮短我的腳本嗎?謝謝你 :)
查看完整描述

2 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

如果所有表都具有相同的結構,則可以使用UNION查詢一次返回所有三個表中的行:


$check = mysqli_query($con, "SELECT * FROM text WHERE keyword='$string'

                             UNION

                             SELECT * FROM sticker WHERE keyword='$string'

                             UNION

                             SELECT * FROM image WHERE keyword='$string'");

這將為您提供與三個現有查詢相同的行集。請注意,將無法確定給定行來自哪個表,因此您可能需要添加一個額外的字段來表示例如


$check = mysqli_query($con, "SELECT *, 'text' AS src FROM text WHERE keyword='$string'

                             UNION

                             SELECT *, 'sticker' AS src FROM sticker WHERE keyword='$string'

                             UNION

                             SELECT *, 'image' AS src FROM image WHERE keyword='$string'");



查看完整回答
反對 回復 2021-05-28
?
皈依舞

TA貢獻1851條經驗 獲得超3個贊

確保在所有3個表的關鍵字列上都有索引,以便避免完全表掃描。在下面使用創建索引。

    CREATE INDEX keyword ON text (keyword);

    CREATE INDEX keyword ON sticker (keyword);

    CREATE INDEX keyword ON image (keyword);

如果您想知道3個表中的任何一個表中是否存在關鍵字,請僅選擇1行。

    <?php

    $check = mysqli_query($con, "SELECT 1 FROM text WHERE keyword='$string' limit 1

                                UNION SELECT 1 FROM sticker WHERE keyword='$string' limit 1

                                UNION SELECT 1 FROM image WHERE keyword='$string' limit 1");

    if(mysqli_num_rows($check) == 0 ) {

        echo "success";

    }

    ?>

如果要從每個表中選擇一些行,請使用限制。我僅以5為例。



    <?php

    $check1 = mysqli_query($con, "SELECT * FROM text WHERE keyword='$string' limit 5");

    $check2 = mysqli_query($con, "SELECT * FROM sticker WHERE keyword='$string' limit 5");

    $check3 = mysqli_query($con, "SELECT * FROM image WHERE keyword='$string' limit 5");

    if(mysqli_num_rows($check1) == 0 && mysqli_num_rows($check2) == 0 && mysqli_num_rows($check3) == 0) {

        echo "success";

    }

    ?>


查看完整回答
反對 回復 2021-05-28
  • 2 回答
  • 0 關注
  • 134 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號