错误:使用的SELECT语句具有不同的列数,如何修复它?

时间:2011-10-18 07:17:56

标签: php sql codeigniter

导致此错误的原因是什么?怎么解决它?

$find = 'hello';
$data = $this->db->query('SELECT * FROM tour_foreign_residence WHERE name LIKE "%' . $find . '%" UNION SELECT * FROM tour_foreign WHERE name LIKE "%' . $find . '%"');

错误:

  

发生数据库错误
错误编号:1222
使用的SELECT   语句具有不同数量的列
SELECT * FROM   tour_foreign_residence WHERE name LIKE“%hello%”UNION SELECT * FROM   tour_foreign WHERE name LIKE“%hello%”
文件名:   D:\ xampp \ htdocs \ system \ database \ DB_driver.php
行号:330

4 个答案:

答案 0 :(得分:2)

使用UNION运算符有两个主要规则:

  1. 联合查询中的retreived列的计数和排序应该相同
  2. 适当列中的数据类型必须兼容
  3. 在您的情况下,第一个规则被忽略。 请改用join运算符

答案 1 :(得分:1)

您确定需要UNION吗?

UNION要求您正在联合的所有查询在SELECT子句中具有相同的列数,因此您不应使用*,而是明确地编写您需要查询的字段。此外,clumns需要具有相同的数据类型。

答案 2 :(得分:0)

不要在查询中使用SELECT *。而是写下您希望从数据库获取的实际列名。两个表中的列名应该相同。您目前有一个UNION,看起来表格tour_foreign_residencetour_foreign有不同的列。

答案 3 :(得分:0)

根据w3schools article about UNION operator

  

UNION中的每个SELECT语句必须具有相同的名称   列数。列还必须具有类似的数据类型。   此外,每个SELECT语句中的列必须具有相同的顺序。