【发布时间】:2010-05-20 09:00:55
【问题描述】:
我有 6 张桌子,我们称它们为 a、b、c、d、e、f。现在我想在所有表的所有列(ID 列除外)中搜索某个单词,比如说“Joe”。我所做的是,我对所有表进行了 INNER JOINS,然后使用 LIKE 搜索列。
INNER JOIN
...
ON
INNER JOIN
...
ON.......etc.
WHERE a.firstname
~* 'Joe'
OR a.lastname
~* 'Joe'
OR b.favorite_food
~* 'Joe'
OR c.job
~* 'Joe'.......etc.
结果是正确的,我得到了我正在寻找的所有列。但我也得到了某种笛卡尔积,我得到了 2 条或更多行的结果几乎相同。
我怎样才能避免这种情况?我希望每行只有一次,因为结果应该出现在网络搜索中。
更新
我首先尝试通过使用以下语句来确定SELECT DISTINCT 是否可以工作:pastie.org/970959 但它仍然给了我一个笛卡尔积。这有什么问题?
【问题讨论】:
-
请说明你使用什么数据库。
标签: sql inner-join cartesian-product