我正在使用此查询,但是我收到此错误。
SELECT `pr_name` AS type FROM `details`
WHERE CONVERT(`pr_name` USING utf8) LIKE '%". $text. "%'
OR CONVERT(`pr_desc` USING utf8) LIKE '%". $text. "%'
UNION
SELECT `pr_name`,`dev_name` as type FROM `devices`
WHERE CONVERT(`dev_name` USING utf8) LIKE '%". $text. "%'
OR CONVERT(`dev_desc` USING utf8) LIKE '%". $text. "%'
UNION
SELECT `dev_name` AS type FROM `clinic`
WHERE CONVERT(`clinic_desc` USING utf8) LIKE '%". $text. "%'
答案 0 :(得分:2)
要创建UNION,每个子查询都需要具有相同的列数。
此处第一个选择仅返回pr_name
,第二个选择也返回dev_name
。
使第二个子查询只返回一列,或者将第二列添加到其他子查询。
答案 1 :(得分:0)
第二个查询选择两列,其他只有一列。改为:
SELECT `pr_name` AS type,null FROM `details` WHERE CONVERT(`pr_name` USING utf8) LIKE '%". $text. "%' OR CONVERT(`pr_desc` USING utf8) LIKE '%". $text. "%'
UNION
SELECT `pr_name`,`dev_name` as type FROM `devices` WHERE CONVERT(`dev_name` USING utf8) LIKE '%". $text. "%' OR CONVERT(`dev_desc` USING utf8) LIKE '%". $text. "%'
UNION
SELECT `dev_name` AS type,null FROM `clinic` WHERE CONVERT(`clinic_desc` USING utf8) LIKE '%". $text. "%'
或删除第二个选择中的第二列。或者你需要一个逻辑来制作一列中的一列。
答案 2 :(得分:0)
您需要在第一个和最后一个查询(' ')
中添加一个空字符串列作为dev_name,或者在中间查询中连接'pr_name'+' - ' +'dev_name'
。与UNION
一样,每个结果集必须包含相同数量的列。