我試圖從我的數據庫中使用一組測試數據來創建一個隨機名稱生成器查詢。按行合併兩個子查詢
該字段name
存儲客戶全名,但我希望查詢從name
字段中獲取隨機名並從name
字段獲取隨機姓。
查詢:
select concat(first_name, ' ', last_name) from
((select lcase(SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 1), ' ', -1)) as first_name
from customers
where SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 1), ' ', -1) not like '%Mrs'
and SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 1), ' ', -1) not like '%Mrs'
and SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 1), ' ', -1) not like '%Mr'
and SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 1), ' ', -1) not like '%.%'
and length(SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 1), ' ', -1)) > 1
order by rand()
limit 10) as first_name_tbl,
(select lcase(SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1)) as last_name
from customers
where SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1) not like '%Mrs'
and SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1) not like '%Mrs'
and SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1) not like '%Mr'
and SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1) not like '%.%'
and length(SUBSTRING_INDEX(SUBSTRING_INDEX(name, ' ', 2), ' ', -1)) > 1
order by rand()
limit 10) as last_name_tbl);
的問題,我的查詢是返回重名,而不是記錄的權數。
目前的結果:
100 rows in set
| sabrina mole |
| daniel mole |
| helen mole |
| jenny mole |
| caroline mole |
| catherine mole |
| julia mole |
| carmella mole |
| mark mole |
| catharine mole |
| sabrina salgado |
| daniel salgado |
| helen salgado |
| jenny salgado |
| caroline salgado |
| catherine salgado |
| julia salgado |
| carmella salgado |
.....
期望的結果
10 rows in set
| sabrina mole |
| daniel salgado |
| helen oinn |
| jenny hird |
| caroline thompson |
| catherine helena |
| julia taylor |
| carmella spectrum |
| mark storrie |
| catharine pat |
當你說重名的加入,你的意思,你只希望每個名字和姓氏使用一次? –
@HolmesIV是的,那完全正確。 –