我花了几个小时试图从不同的表中选择所有行,但仍然没有成功。我得到:
column name firstname is ambiguous
这些表没有任何关系,我只想选择所有行,因为我需要查询来搜索所有表中的匹配字符串。我有搜索栏。
有没有更好的方法可以从多个列编号不匹配的表中选择所有行。我试过UNION ALL
,但它给了我一个错误。请帮助
$mydb = new mysqli('localhost', 'root', '', 'db');
$stmt = $mydb->prepare("SELECT * FROM `table1` t1 JOIN `table2` t2 ON joinitem.t1 = joinitem.t2 where firstname = ? ");
stmt->bind_param('s', $firstname);
echo $mydb->error;
$stmt->execute();
尝试在WHERE
子句中指定,如
SELECT * FROM `table1` t1
JOIN `table2` t2 ON t1.joinitem = t2.joinitem
WHERE t1.firstname = ?
出现此错误是因为两个表中都有列firstname
。如果不指定所指的firstname
,SQL就无法判断查询是基于表1的名字还是表2的名字。
为了确保SQL知道您指的是哪一个,请在列名前面加上表名。
此外,我认为JOIN
条件应该是tablename.joinitem
而不是joinitem.tablename
。
以下是一个示例,假设您想要的firstname
来自table2
:
SELECT *
FROM `table1` t1
JOIN `table2` t2 ON t1.joinitem = t2.joinitem
WHERE t2.firstname = ?