php - 从所有表中选择行的简单方法
问题描述
我想在我的 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";
}
?>
还有另一种方法可以缩短我上面的脚本吗?谢谢你 :)
解决方案
如果所有表都具有相同的结构,则可以使用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'");
推荐阅读
- c++ - 方法的静态函数等价
- python - 我的 TensorFlow 应用程序出现错误,我似乎找不到它
- javascript - 将分页调用的结果与 CoinMarketCap API v2 相结合
- docker - 无法使用 docker-compose 构建和运行 docker 容器
- ruby-on-rails - 扩展 ActiveStorage::Attachment - 添加自定义字段
- javascript - 如何将单独的 html 文件加载到 vue 模板实例中
- sql - 高级 SQL - 如何在 Oracle 的表中显示跨多个列的运行总和
- php - 简单的贝宝 ipn 总是响应无效
- sql - 从没有联合的条件组返回多行
- sql - 高级 SQL - 基于表中的值我想进行计算