mysql - 使用动态 SQL 查询选择数据

标签 mysql

我有一个表,其中有一列名为“type”。我将表名称保留在该列中(作为类型名称)。我想检查行的类型(表名称)并使用 id 从该表中获取数据。是否可以在一个查询中完成?

这是主表的结构-

    CREATE TABLE `post` (
  `post_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `column` enum('1','2','3') NOT NULL,
  `type` enum('post_image','post_video') NOT NULL,
  `title` varchar(255) CHARACTER SET utf8 NOT NULL,
  `description` text CHARACTER SET utf8 NOT NULL,
  `thumb` varchar(255) NOT NULL,
  `post_date` datetime NOT NULL,
  `views` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  PRIMARY KEY (`post_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;

这是上列中两种不同类型的两个表 -

    CREATE TABLE `post_image` (
  `post_image_id` int(11) NOT NULL AUTO_INCREMENT,
  `post_id` int(11) NOT NULL,
  `image` varchar(255) NOT NULL,
  PRIMARY KEY (`post_image_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;


    CREATE TABLE `post_video` (
  `video_remote_id` int(11) NOT NULL AUTO_INCREMENT,
  `post_id` int(11) NOT NULL,
  `video_type` enum('vimeo','youtube') NOT NULL,
  `video_id` int(11) NOT NULL,
  `video_url` varchar(255) NOT NULL,
  `video_title` int(11) NOT NULL,
  `video_duration` int(11) NOT NULL,
  PRIMARY KEY (`video_remote_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

最佳答案

在单个查询中 - 否。

尝试使用prepares statement 。将表的名称读入变量,构建 SELECT 查询字符串并使用 EXECUTE 命令执行它。

关于mysql - 使用动态 SQL 查询选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404587/

相关文章:

mysql - 比较Python3 MySQL中的DATE值(mysql-connector)

mysql - 测试mysql主从复制性能

mysql - 如何解决高级过滤器问题,使用 MySQL 查询

python - 设置 SQLAlchemy PickleType 列大小

mysql - 在 MySQL 中为列创建排名变量

mysql - 如果表尚不存在,则创建表时出现 SQL 语法错误

mysql - 如何使用 SQL 连接从两个表中选择表

c# - 含有外文的 URL 和标题

mysql - 寻求有关特定用例的 MongoDB 性能的见解

mysql - 如何更改MySQL表内的日期格式?