我有两个表,列数和列名不同。
标签a:
ID nome cognome messaggio testo orario ip
--- --------- --------- --------- --------- --------- ---------
1 a a a a a 127
2 b b b b b 111
3 a a tt qqq h 127
标签b:
id nome cognome email
--- --------- --------- ---------
1 t t t
我想像我一样在两个表中使用%t%和两个表的正确发布者所有列吗?
打印:
ID nome cognome messaggio testo orario ip email
--- --------- --------- --------- --------- --------- --------- ---------
1 t t null null null null t
3 a a tt qqq h 127 null
答案 0 :(得分:0)
你正在寻找这样的东西:
SELECT ID as id, nome, cognome, messaggio, testo, orario, ip, NULL AS email
FROM `tabA`
WHERE nome LIKE '%t%' OR cognome LIKE '%t%' OR messaggio LIKE '%t%' OR testo LIKE '%t%'
UNION ALL
SELECT id as id, nome, cognome, NULL as messaggio, NULL AS testo, NULL as orario, NULL AS ip, email
FROM `tabB`
WHERE nome LIKE '%t%' OR cognome LIKE '%t%' OR email LIKE '%t%'
的 sqlFiddle demo 强>
UNION
用于将多个SELECT
语句的结果合并到一个结果集中。 UNION
删除重复的行,UNION ALL
返回所有行。每个SELECT
语句的列号必须相等,因此我指定了每个SELECT
中的所有字段,为不存在的列设置了Null
。
请注意以上使用LIKE
会严重影响效果。