mysql - 获取列中变量匹配的表名

标签 mysql sql

如何获取所有表中 nname 为“new5”的表名?。我尝试了下面的查询,但没有得到解决方案(我认为查询也不正确)。我真的很感谢任何帮助。谢谢前进。

http://sqlfiddle.com/#!2/aa1b8/7

CREATE TABLE if not exists tblC1
(
id int(11) NOT NULL auto_increment ,
nname varchar(255),
 PRIMARY KEY (id)
);

INSERT INTO tblC1 (id, nname) VALUES
('1', 'new1'),
('2', 'new2'),
('3', 'new3'),
('4', 'new4'),
('5', 'new5');


CREATE TABLE if not exists tblC2
(
id int(11) NOT NULL auto_increment ,
nname varchar(255),
 PRIMARY KEY (id)
);

INSERT INTO tblC2 (id, nname) VALUES
('1', 'new1'),
('2', 'new21'),
('3', 'new31'),
('4', 'new41'),
('5', 'new51');

CREATE TABLE if not exists tblC3
(
id int(11) NOT NULL auto_increment ,
nname varchar(255),
 PRIMARY KEY (id)
);

INSERT INTO tblC3 (id, nname) VALUES
('1', 'new1'),
('2', 'new21'),
('3', 'new31'),
('4', 'new41'),
('5', 'new5');

查询:

SELECT  * 
FROM (SELECT  * FROM   tblC1 
      UNION SELECT * FROM tblC2  
      UNION SELECT * FROM tblC3 ) as t2  
where nname = "new5"

最佳答案

将表名称添加到您的单个选择中:

SELECT * FROM (
    SELECT 
        'tblC1' as tbl, tblC1.*
     FROM   tblC1 
      UNION SELECT 'tblC2', tblC2.* FROM tblC2  
      UNION SELECT 'tblC3', tblC3.* FROM tblC3 
) t
where t.nname = "new5"

应该做。对于联合的每个选择,您都需要外部选择或 where 子句。并且您必须指定表名,

Fiddle

关于mysql - 获取列中变量匹配的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25631390/

相关文章:

MySQL 查询 : limit result respecting substring count

mysql - Mysql跨库触发器

sql - 合并日期,hits.hour和hits.minute字段

sql - 如何以特定格式显示查询结果

php - 在 Woocommerce 中获取用户购买的商品总数

java - 读取数据库后在 Java 中捕获异常的正确方法

php - 使用 bcrypt 时应在表中存储什么

mysql - SQL查询根据If语句复制记录

php - mysql NOW() 返回托管服务器国家/地区日期和时间,但想获得印度标准时间

mysql - 第 15 行第 2 列语法错误 : ` socket:/tmp/mysql.sock'