簡體   English   中英

錯誤:使用的SELECT語句的列數不同,如何解決?

[英]Error: The used SELECT statements have a different number of columns, how is fix it?

是什么原因導致此錯誤? 如何解決?

$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名稱類似“%hello%” UNION SELECT * FROM tour_foreign_residence WHERE名稱類似“%hello%”
文件名:D:\\ xampp \\ htdocs \\ system \\ database \\ DB_driver.php
行號:330

使用UNION運算符有兩個主要規則:

  1. 聯合查詢中計數和排序返回的列應相等
  2. 適當列中的數據類型必須兼容

在您的情況下,第一個規則將被忽略。 使用join運算符

您確定需要UNION嗎?

UNION要求您要合並的所有查詢的SELECT子句中的列數均相同,因此不應使用*,而應寫出需要查詢的字段。 同樣,笨拙的對象必須具有相同的數據類型。

不要在查詢中使用SELECT * 而是寫下要從數據庫中獲取的實際列名。 兩個表中的列名應相同。 您當前有一個UNION ,看起來tour_foreign_residence表和tour_foreign表具有不同的列。

根據w3schools關於UNION運算符的文章

UNION中的每個SELECT語句必須具有相同的列數。 這些列還必須具有相似的數據類型。 另外,每個SELECT語句中的列必須具有相同的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM